PHP Flatten Array с выходом вариации

Array
(
[Colour] => Array
(
[Red] => Red
[Blue] => Blue
)

[Size] => Array
(
[Small] => Small
[Medium] => Medium
[Large] => Large
)

[Brand] => Array
(
[Nike] => Nike
[Adidas] => Adidas
)

)

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

Red - Small - Nike
Red - Medium - Nike
Red - Large - Nike
Red - Small - Adidas
Red - Medium - Adidas
Red - Large - Adidas
Blue - Small - Nike
Blue - Medium - Nike
Blue - Large - Nike
Blue - Small - Adidas
Blue - Medium - Adidas
Blue - Large - Adidas

-4

Решение

То, что вы ищете, это декартово произведение.

Объедините значения следующим образом:

$data = [
'Colour' => [
'Red' => 'Red',
'Blue' => 'Blue',
],
'Size' => [
'Small' => 'Small',
'Medium' => 'Medium',
'Large' => 'Large',
],
'Brand' => [
'Nike' => 'Nike',
'Adidas' => 'Adidas',
],
];

$combined = [];

foreach ($data['Colour'] as $colour) {
foreach ($data['Brand'] as $brand) {
foreach ($data['Size'] as $size) {
$combined[] = implode(' - ', [
$colour,
$size,
$brand
]);
}
}
}

var_dump($combined);

Для справки смотрите:

Например, смотрите:

2

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector