PHP数组组合
我用的是公认的答案。因为我有相同的要求,所以我需要得到一个可变长度数组的所有组合以及可变数量的元素。但是,我还需要它来生成所有组合,这些组合不使用数组中的所有元素,而是有序的。这有意义吗 如果这是数组: $array = array( array('1', '2'), array('a', 'b', 'c'), array('x', 'y'), ); $array=array( 数组('1','2'), 数组('a','b','c'), 数组('x','y'), ); 我还想把它加上1a,1b,1c,2a,2b,2c。但不是1x或1y,因为它漏掉了数组的第二个元素 我不太明白如何把答案改成包含这个 谢谢,Psy像这样的吗? 其思想是循环一个数组,并与另一个数组中的每个值组合PHP数组组合,php,arrays,combinations,Php,Arrays,Combinations,我用的是公认的答案。因为我有相同的要求,所以我需要得到一个可变长度数组的所有组合以及可变数量的元素。但是,我还需要它来生成所有组合,这些组合不使用数组中的所有元素,而是有序的。这有意义吗 如果这是数组: $array = array( array('1', '2'), array('a', 'b', 'c'), array('x', 'y'), ); $array=array( 数组('1','2'), 数组('a','b','c'), 数组('x','y'), ); 我
// Loop array[0].
for($i=0; $i<count($array[0]); $i++) {
// Loop array[1]
for($j=0; $j<count($array[1]); $j++) {
echo $array[0][$i];
echo $array[1][$j];
}
}
//循环数组[0]。
对于($i=0;$i,使用Josh Davis的方法回答相关问题:
$array = array( array('1', '2'),
array('a', 'b', 'c'),
array('m', 'n'),
array('x', 'y'));
$result = array();
$php = 'list($a' . implode(',$a', array_keys($array)) . ')=$array;';
$close_brakets='';
$r='';
foreach($array as $k => $v)
{
$r .= '$v'.$k;
$php.='foreach($a'.$k.' as $v'.$k.'){ $result[]="'.$r.'";';
$close_brakets.="}";
}
$php .= $close_brakets;
eval($php);
print_r($result);
为您提供所需的组合以我最初使用的代码为例,这是我想到的,以防其他人好奇
$patterns_array = array();
$php = '';
foreach ($patterns as $i = > $arr)
{
$php .= 'foreach ($patterns[' . $i . '] as $k' . $i . ' => $v' . $i . '){';
$tmp = array();
for($ii=1; $ii<=$i; $ii++){
$tmp[] = $ii;
}
$php .= '$patterns_array[] = $v'.implode('."::".$v', $tmp).';';
}
$php .= '$patterns_array[] = $v' . implode('."::".$v', array_keys($patterns)) . ';' . str_repeat('}', count($patterns));
eval($php);
$patterns_array=array();
$php='';
foreach($i=>$arr的模式)
{
$php.='foreach($patterns['.$i.']作为$k'.$i.=>$v'.$i.){';
$tmp=array();
对于($ii=1;$ii为什么1x和1y不正确?@Ikke:因为它不包含数组中第二个元素的任何内容,即a、b或c.@Bart:对不起,我本应该更好地解释一下这种情况,但是我的情况与链接帖子的OP之后的情况相同,但是额外的一点,将问题改为希望反映一下这一点。我已经阅读了另一篇文章,但它没有回答我的问题。这就是我提问的原因。让我再问一次,但现在用一个例子。你能解释一下当你的数组看起来像这样时,你在寻找什么组合吗:$array=array(array('1','2'),array('a','b','c'),array('m','n'),array('x','y'))
请尽量避免使用“等”之类的术语,请列举所有组合。啊,好的,没问题,我正在跟踪我们网站在整个网站用户旅程中的表现,我对所有数据进行了协作,得到了一个数组,由用户在我们网站上的点击量x和他们点击的前y元素(按钮、输入、链接)组成对于旅程的那个阶段。我现在需要从中找出模式,通过计算出每个可能的组合,一个人可以从这些结果中获得。希望有帮助吗?Psytronic,你在这里回答谁?我想不是我……如果是这样,你根本没有回答我的问题。你希望数组有什么输出:$array=array(数组('1','2')、数组('a','b','c')、数组('m','n')、数组('x','y'));
我怀疑数组是否有固定的长度。感谢您一定没有尝试过该代码,我最终确实设法使用了当前代码并对其进行了更改,但这也很有效:)