4

array_intersectファセット検索を作成していて、配列を比較して一致する入力を見つけるために使用しようとしています。

問題は、ユーザーが選択したフィルターに応じて、いつでも可変量の配列を使用できることです。

$array_1, $array_2, $array_3等...

array_intersectこの意味で動的な関数を作成するにはどうすればよいですか?

これは私が試したことです:

$next_array = 0;
for($i = 0; $i < $array_count; $i++) {
    $next_array++;
    if ($i == 0) {
        $full_array = ${array_.$i};
    } else {
        if(!empty(${cvp_array.$next_array})) {
            $full_array = array_intersect($full_array, ${cvp_array_.$next_array});
        }
    }
}

- - - - - - - 編集 - - - - - - -

目標をもう少し絞り込みます。

ユーザーが3つのフィルターをクリックすると、3つの配列が作成され、それぞれに個別の結果が表示されます。

Array_1 ( [0] => 2, [1] => 4, [2] => 6 )

Array_2 ( [0] => 1, [1] => 4, [2] => 6 )

Array_3 ( [0] => 6, [1] => 7, [2] => 8 )

すべての配列にある番号を見つけるコードが必要です。そして、共通の番号がない場合、それは偽か何かとして終わるでしょう。上記の場合、6を取得するために必要です。最初の2つの配列のみの場合、4と6が返されます。

4

4 に答える 4

15

これを試して:

$fullArray = array($array1, $array2, $array3...);
call_user_func_array('array_intersect', $fullArray);
于 2012-11-08T10:45:47.843 に答える
5

使用できるもの:

$intersect = array_intersect(...$fullArray);
于 2019-07-19T08:16:48.547 に答える
2

まず、これらの配列を配列の配列に変換します。次に、array_reduceと組み合わせて使用​​しarray_intersectて、可変量の配列を1つに減らすことができます。

于 2012-09-12T04:11:13.257 に答える
0

$total_arrayこれらの配列を、を使用して名前が付けられた単一の配列に変換してからarray_combine()、を使用できますarray_intersect($full_array, $total_array)。これがお役に立てば幸いです

于 2012-09-12T04:29:56.833 に答える