首頁  >  文章  >  後端開發  >  學會獲得多個數組差集的三個方法(收藏)

學會獲得多個數組差集的三個方法(收藏)

WBOY
WBOY原創
2021-11-08 10:29:073659瀏覽

在先前的文章《五分鐘學會獲取多個數組交集的三個方法(收藏)》中詳細的介紹了PHP數組操作中怎樣去獲取多個數組交集的相關知識,本篇文章我們就來看看數組操作中怎樣完成取得多個數組的差集。希望對大家有幫助!

學會獲得多個數組差集的三個方法(收藏)

在上一篇文章中我們了解了想要取得多個陣列間的交集我們可以透過PHP中的array_intersect函數、array_intersect_key函數和array_intersect_assoc函數分別以不同的方法來取得陣列之間的交集。既然在PHP中有能夠取得數組間交集的方法那同時也會有取得PHP數組間差集的方法。

取得數組間差集的方法有很多,與獲取交集類似,我們也可以透過比較鍵值、比較鍵名和比較鍵值與鍵名的方法來比較數組,然後取得數組間的差集。下面我們就分別來看看這三種方法的使用吧。

比較鍵值-<span style="font-size: 20px;">array_diff</span>函數

在PHP中內建了array_diff函數用來透過比較鍵值的方式來比較數組,然後傳回數組間的差集。 array_diff函數的基本語法格式如下:

array_diff(array1,array2,array3...);

其中需要注意的是,參數array123表示的是用來比較的數組,傳回的結果差集數組,該數組中的元素包括在了第一個數組元素中。傳回數組是第一個數組中其他數組沒有的值,在傳回的數組中鍵名保持不變。

下面我們透過範例來看一下array_diff函數的使用,範例如下:

<?php
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_diff($fruit1, $fruit2, $fruit3);
print_r($intersection);
?>

輸出結果:

學會獲得多個數組差集的三個方法(收藏)

透過上述範例我們透過array_diff函數,傳回的結果正是陣列1與其他陣列的差集。也就是傳回的結果正是數組1中有但是其他數組中沒有的元素。當然了這是比較元素的鍵值,下面我們來看看透過比較元素的鍵名,傳回的結果有什麼不同。

比較鍵名-array_diff_key函數

在PHP中可以透過array_intersect_key函數來比較數組間的鍵名然後返回數組間的交集,與之類似的就是array_diff_key函數能夠比較鍵名然後返回數組間的差集。

array_diff_key函數的基本語法格式如下:

array_diff_key(array1,array2,array3...);

其中需要注意的是:參數array123表示的需要比較的數組,傳回的差集數組中的元素都是數組1中的元素,但是並不在其他的數組元素中。

接下來我們透過範例來看一下array_diff_key函數的應用,範例如下:

<?php
$fruit1 = array("a"=>"Apple","b"=>"Banana","c"=>"Orange");
$fruit2 = array("a"=>"Pear","d"=>"Apple","e"=>"Grape");
$fruit3 = array("a"=>"Watermelon","f"=>"Orange","g"=>"Apple");
$intersection = array_diff_key($fruit1, $fruit2, $fruit3);
print_r($intersection);
?>

輸出結果:

學會獲得多個數組差集的三個方法(收藏)

透過上述範例我們就是透過array_diff_key函數來比較陣列間的鍵名,然後傳回差集,傳回的結果正是陣列1中所有的鍵名但是其他的陣列元素中沒有的鍵名。這是透過比較鍵名,下面我們來看看同時比較鍵值和鍵名應該怎麼操作。

比較鍵值與鍵名-array_diff_assoc函數

在PHP中可以透過array_intersect_assoc函數比較鍵值與鍵名,然後傳回的結果是數組元素中的交集,與之類似的就是array_diff_assoc函數它也是比較鍵值與鍵名,但是傳回的結果是數組元素中的差集。

array_diff_assoc函數的基本語法格式如下:

array_diff_assoc(array1,array2,array3...);

其中需要注意的是:參數array123表示的需要比較的數組,透過比較鍵值與鍵名,傳回的差集數組中的元素都是數組1中的元素,但是並不在其他的數組元素中。

下面我們透過範例來看一下array_diff_assoc函數的應用,範例如下:

<?php
$fruit1 = array("a"=>"Apple","b"=>"Banana","c"=>"Orange");
$fruit2 = array("a"=>"Pear","d"=>"Apple","e"=>"Grape");
$fruit3 = array("a"=>"Watermelon","f"=>"Orange","g"=>"Apple");
$intersection = array_diff_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);
?>

輸出結果:

學會獲得多個數組差集的三個方法(收藏)

透過上述範例我們透過array_diff_assoc函數來進行比較陣列間的鍵值與鍵名,然後傳回差集,傳回的結果正是陣列1中的元素,但是並不在其他的數組中。

大家如果有興趣的話,可以點選《PHP影片教學》進行更多關於PHP知識的學習。

以上是學會獲得多個數組差集的三個方法(收藏)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn