Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将多个数组传递给笛卡尔函数_Php_Multidimensional Array_Cartesian Product - Fatal编程技术网

Php 将多个数组传递给笛卡尔函数

Php 将多个数组传递给笛卡尔函数,php,multidimensional-array,cartesian-product,Php,Multidimensional Array,Cartesian Product,我需要以索引格式将多个数组传递给cartesain函数,以便计算每个排列。当代码为: $count = cartesian( Array("GH20"), Array(1,3), Array(6,7,8), Array(9,10) ); 我并不总是知道数组的长度、数量或值,因此它们存储在另一个数组$total中,该数组可能如下所示: Array ( [0] => Array ( [0] => 1

我需要以索引格式将多个数组传递给cartesain函数,以便计算每个排列。当代码为:

$count = cartesian(
Array("GH20"),
Array(1,3),
Array(6,7,8), 
Array(9,10)
);
我并不总是知道数组的长度、数量或值,因此它们存储在另一个数组$total中,该数组可能如下所示:

Array ( 
    [0] =>  Array
            (
            [0] => 1
            [1] => 3
            ) 
    [1] => Array 
            (
            [0] => 6
            [1] => 7 
            [2] => 8
            ) 
    [2] => Array 
            ( 
            [0] => 9 
            [1] => 10 
            ) 
    )
Array (
[0] => Array (
    [0] => Array (
        [0] => Array (
            [0] => 1
            [1] => 3
            [2] => 4
        )
            [1] => Array (
            [0] => 5
            [1] => 6
            [2] => 7
            [3] => 8
        )
            [2] => Array (
            [0] => 9
            [1] => 10
        )
        )
    )
)
我已尝试按照以下步骤实现用户回拨功能:

$count = call_user_func('cartesian', array($total));
但是,随后传递的数组如下所示:

Array ( 
    [0] =>  Array
            (
            [0] => 1
            [1] => 3
            ) 
    [1] => Array 
            (
            [0] => 6
            [1] => 7 
            [2] => 8
            ) 
    [2] => Array 
            ( 
            [0] => 9 
            [1] => 10 
            ) 
    )
Array (
[0] => Array (
    [0] => Array (
        [0] => Array (
            [0] => 1
            [1] => 3
            [2] => 4
        )
            [1] => Array (
            [0] => 5
            [1] => 6
            [2] => 7
            [3] => 8
        )
            [2] => Array (
            [0] => 9
            [1] => 10
        )
        )
    )
)
我哪里做错了,为什么数组被进一步埋在不需要它的地方,这就是为什么我的cartesain函数不再工作的原因吗

谢谢,尼克

根据要求,以下是我的cartesain功能:

function 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;
}
为什么阵列在不需要它的地方被埋得更深

这仅仅是因为在调用call_user_func时,您正在将一个数组包装到另一个数组中

也许你的意思是:

$count = call_user_func('cartesian', $total);
这就是我的cartesain函数不再工作的原因吗

我不知道,你没有发布你的cartesain,只是一个叫cartesain的arrat

当op更新问题时进行编辑

如果您使用的是PHP5.6,您应该能够使用

免责声明,我没有测试过这个

当使用。。。接线员


是的,我没有将$total作为数组传递,但是只传递了第一个键,因此整个过程都变得无用。