PHP 2D Array输出所有组合

stu*_*err 19 php arrays recursion multidimensional-array

我有这个问题现在弯曲了一段时间(头冷也没有帮助!),基本上我有一个PHP数组,看起来像这个例子:

$array[0][0] = 'apples';
$array[0][1] = 'pears';
$array[0][2] = 'oranges';

$array[1][0] = 'steve';
$array[1][1] = 'bob';
Run Code Online (Sandbox Code Playgroud)

而且我希望能够从这个表格中生成每种可能的组合,但不重复任何组合(无论它们的位置如何),所以例如这将输出

Array 0            Array 1
apples             steve
apples             bob
pears              steve
pears              bob
Run Code Online (Sandbox Code Playgroud)

但我希望能够使用尽可能多的不同阵列.

use*_*291 20

这被称为"笛卡尔积",数组上的php手册页http://php.net/manual/en/ref.array.php显示了一些实现(在注释中).

而这又是另一个:

function array_cartesian() {
    $_ = func_get_args();
    if(count($_) == 0)
        return array(array());
    $a = array_shift($_);
    $c = call_user_func_array(__FUNCTION__, $_);
    $r = array();
    foreach($a as $v)
        foreach($c as $p)
            $r[] = array_merge(array($v), $p);
    return $r;
}

$cross = array_cartesian(
    array('apples', 'pears',  'oranges'),
    array('steve', 'bob')
);

print_r($cross);
Run Code Online (Sandbox Code Playgroud)