関数の概要
PHPの array_intersect 関数は、複数の配列の中から共通して含まれる要素だけを抽出して新しい配列として返します。配列同士の「共通部分」を簡単に取得できるため、データの重複チェックやマッチング処理などでよく利用されます。
パラメータの説明
array $array1
最初の配列。比較対象の基準となる配列です。array ...$arrays
比較する他の配列。複数渡すことができ、全ての配列で共通する要素だけが結果に含まれます。
戻り値
全ての配列に共通して含まれる値のみを持つ配列を返します。キーは最初の配列のものが保持されます。もし共通要素がなければ空の配列が返されます。
使用例を複数
基本的な使い方
<?php
$array1 = ['apple', 'banana', 'cherry'];
$array2 = ['banana', 'blackberry', 'cherry'];
$result = array_intersect($array1, $array2);
print_r($result);
// 出力:
// Array
// (
// [1] => banana
// [2] => cherry
// )
?>
この例では $array1 と $array2 に共通する「banana」と「cherry」が抽出されています。
複数配列で共通要素を取得する
<?php
$array1 = ['red', 'blue', 'green'];
$array2 = ['green', 'blue', 'yellow'];
$array3 = ['blue', 'green', 'black'];
$result = array_intersect($array1, $array2, $array3);
print_r($result);
// 出力:
// Array
// (
// [1] => blue
// [2] => green
// )
?>
3つの配列すべてに含まれる「blue」と「green」が結果に返されます。
キーが保持されることの注意点
<?php
$array1 = [10 => 'a', 20 => 'b', 30 => 'c'];
$array2 = [20 => 'b', 40 => 'c'];
$result = array_intersect($array1, $array2);
print_r($result);
// 出力:
// Array
// (
// [20] => b
// )
?>
戻り値の配列では、元の配列1のキーがそのまま保持されるため、キーの順序や値が重要な処理で注意が必要です。
関連する関数
array_diff– 配列の差分(片方にしかない要素)を取得するarray_intersect_key– キーが共通する要素を取得するarray_intersect_assoc– キーと値の両方が一致する要素を取得する
まとめ
PHPの array_intersect は、複数の配列間で共通する値のみを手軽に抽出できる便利な関数です。キーは最初の配列のものが保持されるため、結果の取り扱いに注意が必要ですが、シンプルな共通要素抽出には非常に役立ちます。複数配列の比較やデータの一致判定が必要な場面で積極的に活用しましょう。
