Вот код, который вычисляет перекрестное произведение.Это не мой код, я нашел его где-то в сети несколько лет назад и с тех пор пользуюсь им.Я не могу вспомнить, откуда это.
function crossProduct($array1=[], $array2=[], $_=[]) {
$_ = func_get_args();
if (count($_) == 0) {
return array(array());
}
$a = array_shift($_);
$c = call_user_func_array(__FUNCTION__, $_);
$r = array();
foreach ($a as $v) {
foreach ($c as $p) {
$r[] = array_merge(array($v), $p);
}
}
return $r;
}
$array = array(
"idnumber" => array("123456"),
"names" => array("name1", "name2"),
"keycodes" => array(101, 102, 103)
);
$result = crossProduct($array["idnumber"], $array["names"], $array["keycodes"]);
Результат:
Array
(
[0] => Array
(
[0] => 123456
[1] => name1
[2] => 101
)
[1] => Array
(
[0] => 123456
[1] => name1
[2] => 102
)
[2] => Array
(
[0] => 123456
[1] => name1
[2] => 103
)
[3] => Array
(
[0] => 123456
[1] => name2
[2] => 101
)
[4] => Array
(
[0] => 123456
[1] => name2
[2] => 102
)
[5] => Array
(
[0] => 123456
[1] => name2
[2] => 103
)
)