php怎麼求陣列的差集

2022-06-29 18:00:36

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.png

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.png

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.png

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"」,因此輸出的結果為:

4.png

推薦學習:《》

以上就是php怎麼求陣列的差集的詳細內容,更多請關注TW511.COM其它相關文章!