3種方法:1、用array_diff()比較數組的鍵值,并以數組形式返回差集,語法“array_diff(數組1,數組2)”;2、用array_diff_key()比較數組的鍵名,并以數組形式返回差集,語法“array_diff_key(數組1,數組2)”;3、用array_diff_assoc()比較數組鍵名和鍵值,語法“array_diff_assoc(數組1,數組2)”。

本教程操作環境:windows7系統、PHP8.1版、DELL G3電腦
在PHP中,可以利用以下3個內置函數來求數組差集:
-
array_diff()
-
array_diff_key()
-
array_diff_assoc()
它們分別會從“鍵值”、“鍵名”、“鍵值和鍵名”方面來比較數組,以數組形式返回差集,差集元素會從被比較的那個數組(第一個參數)中獲取。
我們有下面兩個數組:
$arr1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $arr2=array("a"=>"orange","b"=>"green","e"=>"red","r"=>"yellow");

1、使用array_diff()函數–比較數組的鍵值
<?php header("Content-type:text/html;charset=utf-8"); $arr1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $arr2=array("a"=>"orange","b"=>"green","e"=>"red","r"=>"yellow"); $result=array_diff($arr1,$arr2); var_dump($result); ?>
array_diff($arr1,$arr2...)函數只比較數組的鍵值,會返回一個差集數組,差集數組中的元素是存在于被比較的數組$arr1中,但不存在于其他參數數組$arr2...中的。
我們來看看上面的示例,$arr1數組和$arr2數組比較,只存在于$arr1數組的鍵值只有:“blue”,因此輸出的結果為:

2、使用array_diff_key()函數–比較數組的鍵名
<?php header("Content-type:text/html;charset=utf-8"); $arr1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $arr2=array("a"=>"orange","b"=>"green","e"=>"red","r"=>"yellow"); $result=array_diff_key($arr1,$arr2); var_dump($result); ?>
array_diff_key($arr1,$arr2...)函數只比較數組的鍵名,同樣返回一個差集數組,差集數組中的元素是存在于被比較的數組$arr1中,但不存在于其他參數數組$arr2...中的。
而在上面的示例,$arr1數組和$arr2數組中有兩個鍵名不相同,以數組$arr1為準就會得到值“"c"=>"blue"”和“"d"=>"yellow"”,因此輸出的結果為:

3、使用array_diff_assoc()函數–比較數組的鍵名和鍵值
<?php header("Content-type:text/html;charset=utf-8"); $arr1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $arr2=array("a"=>"orange","b"=>"green","e"=>"red","r"=>"yellow"); $result=array_diff_assoc($arr1,$arr2); var_dump($result); ?>
array_diff_assoc($arr1,$arr2...)函數會將數組的鍵名和鍵值都進行比較,同樣返回一個差集數組,差集元素和array_diff()、array_diff_key()一樣會從被比較的數組$arr1中獲取。
上例中,$arr1數組和$arr2數組進行比較,有三個不相同的元素,然后以數組$arr1為準會得到值“"a"=>"red"”、“"c"=>"blue"”、“"d"=>"yellow"”,因此輸出的結果為:

推薦學習:《PHP視頻教程》
站長資訊網