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


花蓮 豐坪雲山水夢幻湖

在資料比較的時候,使用array_diff、array_intersect方便很多,以下提出幾項需注意的要點。
array_diff($a,$b);
  1. 意謂用$a陣列去比較$b陣列, 如果$a有且$b沒有則取出, 所以此時以$a為基準。
  2. 使用時確保$a跟$b兩個列都不能為空值, 否則會發生錯誤。
  3. 只比較陣列中key的值。
  1. function myTest()
  2. {
  3. $tommy = [
  4. 'A0001',
  5. 'A0002',
  6. 'A0003'
  7. ];
  8.  
  9. $amy = [
  10. 'A0001',
  11. 'A0002',
  12. 'A0004'
  13. ];
  14.  
  15. //比較兩個陣列內容的差異
  16. $return_diff = array_diff($tommy, $amy);
  17. //如果將陣列次序左右對調
  18. $return_diff_01 = array_diff($amy, $tommy);
  19.  
  20. print_r($return_diff);
  21. print_r($return_diff_01);
  22. }
執行結果
  1. //$return_diff 結果
  2. array(
  3. [2]=>A0003
  4. )
  5. //$return_diff_01 結果
  6. array(
  7. [2]=>A0004
  8. )
接下來介紹
array_intersect($a,$b);
比較左右兩陣列, 取出互相重複的值, 沒有左右順位的問題。
  1. function myTest1
  2. {
  3. $tom = [
  4. 'red',
  5. 'blue',
  6. 'yellow'
  7. ];
  8. $rudy = [
  9. 'red',
  10. 'green',
  11. 'yellow'
  12. ];
  13. $return_intersect = $array_intersect($tom, $rudy);
  14. print_r($return_intersect);
  15. }
執行結果
  1. //$return_intersect 結果
  2. array(
  3. [0]=>A0001
  4. [1]=>A0002
  5. )