php 配列と配列を比較して同じ値のみを抽出する

  • 作成日 2021.01.29
  • php
php 配列と配列を比較して同じ値のみを抽出する

phpで、array_intersectを使用して、配列と配列を比較して同じ値のみを抽出するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

array_intersect使い方

array_intersectを使用すれば、配列と配列を比較して同じ値のみを抽出することが可能です。

array_intersect(配列,配列,...);

以下は、2つの配列を比較して同じ値のみを抽出して表示するサンプルコードとなります。

<?php

$arr1 = ["aaa", "bbb", "ccc"];
$arr2 = ["aaa", "ccc"];

$result = array_intersect($arr1,$arr2);

print_r($result);

実行結果

Array
(
    [0] => aaa
    [2] => ccc
)

3つ以上も可能です。

<?php

$arr1 = ["aaa", "bbb", "ccc", "ddd", "eee"];
$arr2 = ["aaa", "ccc"];
$arr3 = ["aaa"];

$result = array_intersect($arr1,$arr2,$arr3);

print_r($result);

実行結果

Array
(
    [0] => aaa
)

文字列として比較しているので、数値の「1」と文字列の「1」は同じと見なされます。

<?php

$arr1 = [1, 2, 3, 4, 5];
$arr2 = ["1", "2"];

$result = array_intersect($arr1,$arr2);

print_r($result);

実行結果

Array
(
    [0] => 1
    [1] => 2
)

連想配列の場合は、キーではなく値が同じであるかで判定されます。

<?php

$arr1 = ["aaa" => 1, "bbb" => 2, "ccc" => 3];
$arr2 = ["aaa" => 2, "eee" => 3];

$result = array_intersect($arr1,$arr2);

print_r($result);

実行結果

Array
(
    [bbb] => 2
    [ccc] => 3
)