0

PHPで配列のすべての一致をクロスチェックし、結果を配列に保存することは可能ですか? `array_intersect() を見つけましたが、この関数は最初の配列の結果しか返しません。値が存在するすべての配列にある場合のみ。

入力例:

Array 1 = 1,2,3
Array 2 = 4,5,6
Array 3 = 6,7,8
Array 4 = 3,9,10

ここで、一致を返す配列が必要です。この例では、次のようになります。

result = 3,6

「3」は配列 1 と配列 4 にあり、結果の「6」は配列 2 と配列 3 にあるためです。

複数の配列にある任意の一致。ヒント/アイデアはありますか?

4

2 に答える 2

1

これはあなたのために働くはずです:

まず、各配列から一意の値をすべて取得しますarray_unique()。次に、それらを で 1 つの配列にマージしarray_merge()、 ですべての値をカウントしますarray_count_values()

array_filter()この後、複数の配列にないすべての値を で除外するだけで、期待どおりの結果が得られます。

配列を元に戻すには、 を使用しますarray_keys()

<?php

    $count = array_count_values(array_merge(array_unique($arr1), array_unique($arr2), array_unique($arr3), array_unique($arr4)));
    $result = array_keys(array_filter($count, function($v){
        return $v >= 2;
    }));

    print_r($result);

?>

出力:

Array
(
    [0] => 3
    [1] => 6
)
于 2015-08-01T14:14:18.590 に答える
-1

あなたは交差点を求めています: http://php.net/manual/en/function.array-intersect.php

あなたの場合、2 つの配列のすべての組み合わせで交差を実行するロジックが必要になります。

于 2015-08-01T14:05:23.223 に答える