0

この質問で受け入れられた回答を使用しています。同じ要件があるため、可変長の配列と可変数の要素のすべての組み合わせを取得する必要があります。ただし、配列のすべての要素を使用するのではなく、順序どおりのすべての組み合わせを生成する必要もあります。それが理にかなっている場合は?

したがって、これが配列の場合:

$array = 配列(
    配列 ('1', '2'),
    array('a', 'b', 'c'),
    配列('x', 'y'),
);

また、1a、1b、1c、2a、2b、2cのように追加したいです。ただし、配列の 2 番目の要素を見逃しているため、1x または 1y ではありません。

これを含めるように回答を変更する方法がよくわかりません。

ありがとう、サイ

4

3 に答える 3

1

リンクされた質問への回答で 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);

希望の組み合わせを提供します

于 2009-11-19T11:32:39.873 に答える
0

私が最初に使用していたコードを取得すると、他の誰かが興味を持っている場合に備えて、これが私が思いついたものです

$patterns_array = 配列();

$php = '';
foreach ($patterns as $i = > $arr)
{
    $php .= 'foreach ($patterns[' . $i . '] as $k' . $i . ' => $v' . $i . '){';
    $tmp = 配列();
    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);
于 2009-11-20T16:08:25.587 に答える
0

このようなもの?アイデアは、1 つの配列をループし、別の配列の各値と結合することです。

// 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];
    }
}
于 2009-11-18T14:56:06.570 に答える