プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、配列の差分を取得する
結論から書くと、array_diff()関数を使って

$ret = array_diff($ary01, $ary02);

のように書けばOKです。
「$ary01」にあって「$ary02」に無い要素が配列として「$ret」に入ります。

あら、楽チンですね(*´ェ`*)

さらに

$ret = array_diff($ary01, $ary02, $ary03, $ary04);

のように、比較対象の配列を複数書くこともできます。
「$ary01」にあって「$ary02」「$ary03」「$ary04」に無い要素が
配列として「$ret」に入ります。

簡単ですね(*´ェ`*)

説明はこれだけですが、一応、サンプルを置いておきますね。
こんなコードを実行するとφ(--)

<?php

$ary01 = array(
    "a"
    ,"b"
    ,"c"
    ,1
    ,2
);

$ary02 = array(
    "a"
    ,"b"
    ,"d"
    ,"1"
);

$ret = array_diff($ary01, $ary02);

var_dump($ret);

こんな結果になりますφ(--)

array(2) {
    [2]=>
    string(1) "c"
    [4]=>
    int(2)
}

どうやら型は無視されるみたいですね。
「$ary01」の「1」と「$ary02」の「"1"」は同じものと見なされたようです。

比較対象が複数あるサンプルはこちらですφ(--)

<?php

var_dump($ret);

$ary01 = array(
    "a"
    ,"b"
    ,"c"
    ,1
    ,2
);

$ary02 = array(
    "a"
    ,"b"
    ,"d"
    ,"1"
);

$ary03 = array(
    2
);

$ret = array_diff($ary01, $ary02, $ary03);

var_dump($ret);

結果は、こんなんなりますφ(--)

array(1) {
    [2]=>
    string(1) "c"
}

「$ary01」の「"a"」「"b"」「1」は「$ary02」の要素と一致します。
「$ary01」の「2」は「$ary03」の要素と一致します。
よって、残りの「"c"」のみ差分として抽出されました。

そんな感じ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事