[筆記] PHP array_diff(), array_intersect() 找出陣列差集、交集


花蓮 豐坪雲山水夢幻湖

在資料比較的時候,使用array_diff、array_intersect方便很多,以下提出幾項需注意的要點。
array_diff($a,$b);
  1. 意謂用$a陣列去比較$b陣列, 如果$a有且$b沒有則取出, 所以此時以$a為基準。
  2. 使用時確保$a跟$b兩個列都不能為空值, 否則會發生錯誤。
  3. 只比較陣列中key的值。
function myTest()
{
    $tommy = [
        'A0001',
        'A0002',
        'A0003'
    ];

    $amy = [
        'A0001',
        'A0002',
        'A0004'
    ];

    //比較兩個陣列內容的差異
    $return_diff = array_diff($tommy, $amy);
    //如果將陣列次序左右對調
    $return_diff_01 = array_diff($amy, $tommy);

    print_r($return_diff);
    print_r($return_diff_01);
}
執行結果
//$return_diff 結果
array(
    [2]=>A0003
)
//$return_diff_01 結果
array(
    [2]=>A0004
)
接下來介紹
array_intersect($a,$b);
比較左右兩陣列, 取出互相重複的值, 沒有左右順位的問題。
function myTest1
{
    $tom = [
        'red',
        'blue',
        'yellow'
    ];
    $rudy = [
        'red',
        'green',
        'yellow'
    ];
    $return_intersect = $array_intersect($tom, $rudy);
    print_r($return_intersect);
}
執行結果
//$return_intersect 結果
array(
    [0]=>A0001
    [1]=>A0002
)