配列と配列を比較して共通項を抜き出したい。

PHP

タイトルとおりだが、便利な関数があった。
foreachでぐるぐる回していって、if文で抜き出したい情報抜いてきてたけどコードの行数が長くなっていくのが嫌なのと、ゴチャゴチャロジック考えるのに疲れていた状態だったので「配列と配列比較して、共通項を抜き出すものとかないんか?」とGoogleで検索していたらヒットしたので、やはりみんな欲してるものはだいたいあるんだなーと思った。

array_intersect ( array $array1 , array $array2 [, array $... ] ) : array

array_intersect — 配列の共通項を計算する
array_intersect() は、他の全ての引数に存在する array1 の値を全て有する配列を返します。 キーと値の関係は維持されることに注意してください。

array1
値を調べるもととなる配列。
array2
値を比較する対象となる配列。
...
さらにそれ以外の配列。

https://www.php.net/manual/ja/function.array-intersect.php

公式の説明みてもピンと来なかったのでとりあえずコード書いて実行。

$arrayName1 = array('hoge' => 'huga', 'hogehoge' => 'hugahuga', 'ge' => 'ho');
$arrayName2 = array('hoge' => 'huga', 'hogehoge' => 'hugahuga', 'ho' => 'ge');
$res = array_intersect($arrayName1, $arrayName2);
print_r($arrayName1);
print_r($arrayName2);
print_r($res);

結果↓

Array
(
    [hoge] => huga
    [hogehoge] => hugahuga
    [ge] => ho
)
Array
(
    [hoge] => huga
    [hogehoge] => hugahuga
    [ho] => ge
)
Array
(
    [hoge] => huga
    [hogehoge] => hugahuga
)

これだ!!
と思って、実際に必要なコード書いていったら実現できたのでDone。
読むだけだとやはりピンと来ないので、実行しないとわからんよねー、ほんと……。

タイトルとURLをコピーしました