PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

【PHP】array_intersect()関数の使い方 – 配列の共通値を抽出する方法

PHPのarray_intersect()関数は、複数の配列を比較し、すべての配列に共通して存在する値だけを抽出して返す関数です。返される配列には、最初の配列に含まれており、かつ他のすべての引数の配列にも存在する値が格納されます。

基本構文

array_intersect(arr1, arr2, arr3, arr4, …)

パラメータ

  • arr1 − 比較元となる配列。必須です。

  • arr2 − 比較対象となる配列。必須です。

  • arr3 − さらに比較したい場合は、追加の配列を指定できます。任意です。

  • arr4 − 同様に、必要に応じて追加の配列を指定できます。任意です。

戻り値

array_intersect()関数は、最初の配列に含まれる値のうち、他のすべての配列にも存在する値のみを格納した配列を返します。
なお、キー(添字)は最初の配列のものがそのまま維持される点に注意してください。また、値の比較は文字列として行われるため、「10」と「"10"」などは同一の値として扱われます。

使用例1:連想配列の比較

<?php
$a1 = array("p"=>"Windows","q"=>"Mac","r"=>"Linux");
$a2 = array("s"=>"Windows","t"=>"Linux");
$result = array_intersect($a1,$a2);
print_r($result);
?>

出力結果

Array 
(
[p] => Windows
[r] => Linux
)

この例では、$a1と$a2の両方に存在する「Windows」と「Linux」が抽出されました。キーは比較元である$a1側の「p」「r」が保持されていることがわかります。

使用例2:数値配列の比較

<?php
$arr1 = array(15, 30, 40, 60, 78, 100, 130, 145, 150);
$arr2 = array(50, 60, 70, 80, 90, 100);
$res = array_intersect($arr1,$arr2);
print_r($res);
?>

出力結果

Array 
(
[3] => 60
[5] => 100
)

この例では、両方の配列に共通して含まれる「60」と「100」が抽出されています。出力のキー「3」「5」は、最初の配列$arr1における各要素のインデックス番号です。

まとめ

array_intersect()は、複数の配列から共通の値を簡単に見つけたい場合に非常に便利な関数です。比較の基準となるのはあくまで「値」であり、キーは考慮されません。キーと値のペアごと比較したい場合はarray_intersect_assoc()、キーだけで比較したい場合はarray_intersect_key()といった関連関数を活用するとよいでしょう。

  1. 【PHP】array_intersect()関数の使い方 – 配列の共通値を抽出する方法

    PHPのarray_intersect()関数は、複数の配列を比較し、すべての配列に共通して存在する値だけを抽出して返す関数です。返される配列には、最初の配列に含まれており、かつ他のすべての引数の配列にも存在する値が格納されます。基本構文array_intersect(arr1, arr2, arr3, arr4, …)パラメータarr1 − 比較元となる配列。必須です。arr2 − 比較対象となる配列。必須です。arr3 − さらに比較したい場合は、追加の配列を指定できます。任意です。arr4 − 同様に、必要に応じて追加の配列を指定できます。任意です。戻り値array_intersect(

  2. PHPのarray()関数とは?配列の作成方法をわかりやすく解説

    PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に