具有变化输出的PHP Flatten Array

时间:2017-08-11 13:53:54

标签: php arrays cartesian-product

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

1 个答案:

答案 0 :(得分:2)

您正在寻找的是笛卡儿产品

合并这样的值:

$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);

供参考,见:

有关示例,请参阅: