Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Combinations - Fatal编程技术网

PHP数组组合

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'), ); 我

我用的是公认的答案。因为我有相同的要求,所以我需要得到一个可变长度数组的所有组合以及可变数量的元素。但是,我还需要它来生成所有组合,这些组合不使用数组中的所有元素,而是有序的。这有意义吗

如果这是数组:

$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像这样的吗? 其思想是循环一个数组,并与另一个数组中的每个值组合

// 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'));
我怀疑数组是否有固定的长度。感谢您一定没有尝试过该代码,我最终确实设法使用了当前代码并对其进行了更改,但这也很有效:)