php 連想配列と連想配列を比較してキーと値が同じものを抽出する

  • 作成日 2020.12.26
  • php
php 連想配列と連想配列を比較してキーと値が同じものを抽出する

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

環境

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

array_intersect_assoc使い方

array_intersect_assocを使用すれば、連想配列と連想配列を比較してキーと値が同じものを抽出することが可能です。

array_intersect_assoc(配列,配列,...);

以下は、連想配列と連想配列を比較してキーと値が同じものを抽出するサンプルコードとなります。

<?php

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

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

print_r($result);

実行結果

Array
(
    [aaa] => 1
    [ccc] => 3
)

3つ以上も可能です。

<?php

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

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

print_r($result);

実行結果

Array
(
    [aaa] => 1
)

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

<?php

$arr1 = ["1" => 1, "bbb" => 2];
$arr2 = [1 => 1, "bbb" => 5];

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

print_r($result);

実行結果

Array
(
    [1] => 1
)

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

<?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
)