在開發過程中,很常見的情況就是需要對數組進行運算,如兩個數組求交集、并集、差集等等。今天我們來了解一下PHP中兩個數組差集的操作。
先來舉個例子,假設有兩個數組:
$arr1 = array('apple', 'banana', 'orange', 'lemon'); $arr2 = array('banana', 'lemon', 'watermelon', 'grape');
這里我們需要得到$arr1中有而在$arr2中沒有的元素,即差集。PHP中提供了一個函數array_diff()來實現這個功能。
$result = array_diff($arr1, $arr2); print_r($result);
輸出結果為:
Array ( [0] => apple [1] => orange )
可見,array_diff()返回的是在第一個數組($arr1)中有但第二個數組($arr2)中沒有的元素。
如果我們需要對多個數組進行差集操作,可以通過傳遞多個參數來實現。假設有三個數組:
$arr1 = array('apple', 'banana', 'orange', 'lemon'); $arr2 = array('banana', 'lemon', 'watermelon', 'grape'); $arr3 = array('orange', 'grape');
這里我們需要得到在$arr1中,但不在$arr2和$arr3中的元素。同樣可以使用array_diff():
$result = array_diff($arr1, $arr2, $arr3); print_r($result);
輸出結果為:
Array ( [0] => apple )
可見,array_diff()返回的是在第一個數組($arr1)中有但其他數組($arr2、$arr3)中沒有的元素。
需要注意的是,array_diff()默認對元素進行松散比較,即使用==運算符。如果需要使用全等比較,即使用===運算符,可以傳遞一個比較函數作為array_diff()的最后一個參數。比較函數返回值為0的元素將被處理為相等。
function strict_compare($a, $b) { if ($a === $b) { return 0; } return ($a > $b) ? 1 : -1; } $arr1 = array(1, 2, 3, 4); $arr2 = array("1", "2", "3", "4"); $result = array_diff($arr1, $arr2); print_r($result); // 輸出:Array ( ) $result = array_diff($arr1, $arr2, 'strict_compare'); print_r($result); // 輸出:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
以上是PHP中兩個數組差集的操作介紹。在開發過程中,差集操作經常會被使用到,希望各位讀者能夠掌握相關技能。
下一篇php 中udp通信