PHP数组的笛卡尔积

3
抱歉标题可能会让人误解,但我不知道它的正确称呼。对此我感到抱歉:(
所以,我有一个类似于这样的数组:
$start = array(
    array('waterpark'),
    array('spain','greece'),
    array('1','2','3','4'),
);

如何将该数组转换为以下格式:
$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'),
);

感谢您提前阅读。

2
它被称为笛卡尔积。 - Sam
1
可能是重复的问题:PHP 2D数组输出所有组合 - nymk
2个回答

5

使用现成的 Cartesian class

使用方法如下:

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

Author: jwage


2
尝试这个,它会帮助你,
    foreach ($start[0] as $value1) { 
        foreach ($start[1] as $value2) {
            foreach ($start[2] as $value3) {
                $res[] = array($value1,$value2,$value3);
            }
        }
   }
   var_dump($res);

谢谢,但我需要一个函数,这样它就可以转换尽可能多的数组。 - ilmansg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接