PHP データの組み合わせの作成

各データの取る値の各組合せを作成したい

作成日: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,
//   ),
//...