0

私は無限のforeachに陥りました。

配列を取得しました:

$array[0] = array( A,B );
$array[1] = array( A,C );
$array[2] = array( B,C );
$array[3] = array( B,E );
$array[4] = array( C,E );

私が得る必要があるのはこれです:

$array[0] = array( A,B,C );
$array[1] = array( A,B,E );
$array[2] = array( A,C,E );
$array[3] = array( B,C,E );

単純な関数でこれを達成する簡単な方法はありますか? また、上記の結果の 4 つの値配列 (A、B、C、E など) を作成する必要があります。

4

3 に答える 3

1

一意の順列の配列を生成する必要がある場合は、この記事のコードを使用できます。

http://www.dannyherran.com/2011/06/finding-unique-array-combinations-with-php-permutations/

于 2012-04-06T22:46:21.103 に答える
1

このようなもの(テストされていません):

$out = array();
foreach($array as $first) {
    foreach($array as $second) {
        if (array_slice($first, 1) == array_slice($second, -1)) {
            $copy = $first;
            $last = array_slice($second, -1, 1);
            $copy []= $last[0];
            $out []= $copy;
        }
    }
}
于 2012-04-06T23:03:20.810 に答える
0

どうですか:

$array[0] = array( A,B );
$array[1] = array( A,C );
$array[2] = array( B,C );
$array[3] = array( B,E );
$array[4] = array( C,E );

$array2 = new array();

for($i = 0; $i < count($array); $i++)
{
    for($j = 0; $j < count($array); $j++)
    {
        if($array[$i][1] == $array[$j][0])
        {
            $array2[] = new array($array[$i][0], $array[$i][1], $array[$j][1]);
        }
    }
}
于 2012-04-06T23:03:27.510 に答える