Php 将多个数组传递给笛卡尔函数
我需要以索引格式将多个数组传递给cartesain函数,以便计算每个排列。当代码为: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
$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作为数组传递,但是只传递了第一个键,因此整个过程都变得无用。