Создайте один рекурсивный объединенный массив из других массивов

Я хочу перейти от этих массивов:

$array1 = ["x", "y", "z"];
$array2 = ["a","b"];
$array3 = ["1","2","3","4","5","6"];

К этому массиву:

$arrayResult =
array(
array("x" => array("a" => array(1,2,3,4,5,6),
"b" => array(1,2,3,4,5,6)),
"y" => array("a" => array(1,2,3,4,5,6),
"b" => array(1,2,3,4,5,6)),
"z" => array("a" => array(1,2,3,4,5,6),
"b" => array(1,2,3,4,5,6)))
);

Я пытался создать этот комбинированный массив с подходами декартовых произведений, но пока не получил удовлетворительного результата.

0

Решение

Вот еще одно решение без использования цикла:

$array1 = ["x", "y", "z"];
$array2 = ["a","b"];
$array3 = ["1","2","3","4","5","6"];

$result = array_combine(
$array1,
array_fill(
0,
count($array1),
array_combine(
$array2,
array_fill(0, count($array2), $array3)
)
)
);

print_r($result);

Вот демо

1

Другие решения

дважды использовать array_fill_keys, чтобы получить результат

$result = array_fill_keys(
$array1,
array_fill_keys($array2,  $array3)
);

Демо на eval.in

0

По вопросам рекламы [email protected]