作成日:2025-03-17, 更新日:2025-03-17
概要
データの組み合わせを作成したいけど、手動で用意するのは面倒
array_productという概念(?)を使うらしい...
function cartesian($arrays) {
$result = [[]];
foreach ($arrays as $key => $values) {
$append = [];
foreach ($result as $product) {
foreach ($values as $value) {
$append[] = array_merge($product, [$key => $value]);
}
}
$result = $append;
}
return $result;
}
$dataset = [
'serial_auth' => [0, 1],
'crud_c' => [0, 1],
'crud_r' => [0, 1],
'crud_u' => [0, 1],
'crud_d' => [0, 1],
];
$condition_many = cartesian($dataset);
var_dump($condition_many);
// array (
// 0 =>
// array (
// 'serial_auth' => 0,
// 'crud_c' => 0,
// 'crud_r' => 0,
// 'crud_u' => 0,
// 'crud_d' => 0,
// ),
// 1 =>
// array (
// 'serial_auth' => 0,
// 'crud_c' => 0,
// 'crud_r' => 0,
// 'crud_u' => 0,
// 'crud_d' => 1,
// ),
//...