PHPのarray_intersect関数の使い方!配列の共通の値を取得する

PHPのarray_intersect関数について書いています。

array_intersect関数は、複数の配列に共通して存在する値を抽出した新しい配列を返します。
この関数を使うと、複数の配列間で共通する要素を見つけたい場合に便利です。

array_intersect関数の基本的な使い方

array_intersect関数は、引数として与えられた複数の配列に共通して存在する値を抽出し、新しい配列を返します。
基本的な構文は以下のとおりです。

array_intersect(array $array1, array ...$arrays): array
  • $array1: 比較する最初の配列。
    • 共通の値を見つけたい最初の配列を指定します。
  • $arrays: 比較するその他の配列(複数指定可能)。
    • 共通の値を見つけたい追加の配列をカンマ区切りで複数指定できます。

array_intersect関数の戻り値

array_intersect関数の戻り値は、引数として与えられたすべての配列に共通して存在する値を含む配列です。

キーは元の配列のキーが維持されます。
共通する値が存在しない場合は、空の配列を返します。

2つの配列の共通の値を取得する

2つの配列から共通した値を取得します。

<?php
$array1 = ['apple', 'banana', 'orange'];
$array2 = ['banana', 'kiwi', 'orange'];

$common_values = array_intersect($array1, $array2);

print_r($common_values);
// 結果:Array ( [1] => banana [2] => orange )
?>

最初に、2つの配列 $array1$array2 を定義しています。
$array1は「apple」「banana」「orange」という文字列要素を持ち、$array2 は「banana」「kiwi」「orange」という要素を持っています。

そしてarray_intersect関数を呼び出しています。
2つの配列を渡して、共通して存在する値を抽出しています。

両方の配列に含まれている「banana」と「orange」が共通の値として特定されます。
返ってきた$common_valuesを出力すると、2つの配列の共通要素が返ってきていることが確認できました。

3つ以上の配列の共通の値を取得する

3つの配列を指定して、共通の値を取得します。

<?php
$array1 = ['apple', 'banana', 'orange'];
$array2 = ['banana', 'orange', 'grape'];
$array3 = ['orange', 'melon', 'banana'];

$common_values = array_intersect($array1, $array2, $array3);

print_r($common_values);
// 結果:Array ( [1] => banana [2] => orange )
?>

最初に3つの文字列配列を作成しました。($array1$array2$array3)
その後にarray_intersect 関数を使って、$array1, $array2, $array3のすべてに共通して存在する値を取得しています。

今回の例だと「banana」・「orange」が3つの配列に存在するため、新しい配列として抽出されて返ってきます。
結果($common_values)を確認すると、共通の値が取れていることが確認できました。

連想配列を使用したとき

連想配列を使用したときにも、値で判断して共通のものを取得します。

<?php
$array1 = ['a' => 'apple', 'b' => 'banana', 'c' =>'orange'];
$array2 = ['a2' => 'banana', 'b2' => 'orange', 'b3' => 'grape'];
$array3 = ['a3' => 'orange', 'b3' => 'grape'];

$common_values = array_intersect($array1, $array2, $array3);
print_r($common_values);
// 結果:
// Array
// (
//     [c] => orange
// )
?>

3つの配列を用意しました。
それぞれ、連想配列になっていて、キーが違います。

キーが違いますが、array_intersect関数では値のみを確認して判断し、抽出してくれます。
結果を確認すると、3つの配列に共通する「orange」のみが返ってきていることが確認できました。

配列のキーは最初に渡した配列のキーが適用されています。

PHPのarray_intersect関数の使い方まとめ

今回はPHPのarray_intersect関数の使い方について解説しました。
この記事の内容をまとめます。

・`array_intersect(array $array1, array …$arrays): array` で複数の配列に共通して存在する値を抽出した新しい配列を作成する。
・引数として与えられたすべての配列に共通する値が返される。
・返される配列のキーは、最初の配列のキーが維持される。
PHP

コメント