Cartesian product of PHP arrays

2020-03-26 07:15发布

问题:

The title may be misleading, but I don`t really know what it is called. I am sorry for that :(

So, I have an array like this

$start = array(
    array('waterpark'),
    array('spain','greece'),
    array('1','2','3','4'),
);

how do i convert that array to be like this

$output = array(
    array('waterpark', 'spain', '1'),
    array('waterpark', 'spain', '2'),
    array('waterpark', 'spain', '3'),
    array('waterpark', 'spain', '4'),
    array('waterpark', 'greece', '1'),
    array('waterpark', 'greece', '2'),
    array('waterpark', 'greece', '3'),
    array('waterpark', 'greece', '4'),
);

Thank you in advance

回答1:

Use readymade Cartesian class .

Use it like,

$output = Cartesian::build($start);

Author: jwage



回答2:

Try this one it will help you,

    foreach ($start[0] as $value1) { 
        foreach ($start[1] as $value2) {
            foreach ($start[2] as $value3) {
                $res[] = array($value1,$value2,$value3);
            }
        }
   }
   var_dump($res);


标签: php arrays