在 PHP 開發過程中,陣列是一個極為重要的資料類型,它可以方便地儲存和表示大量資料。有時候,我們需要從一個二維數組中剔除某些數組,這時我們該怎麼做呢?本文將介紹兩種不同的方法來達到這個目的。
方法一:使用 array_filter 函數
array_filter 函數是 PHP 中的內建函數,用來過濾陣列中的元素。我們可以利用函數,實現從一個二維數組中剔除某些數組的效果。具體實作如下:
function removeArray($arr, $remove) { return array_filter($arr, function ($item) use ($remove) { return !in_array($item, $remove); }); }
在上述程式碼中,我們定義了一個名為removeArray 的函數,這個函數接受兩個參數:
接著,我們使用 array_filter 函數對 $arr 陣列進行篩選。在回呼函數中,我們使用 in_array 函數來判斷目前遍歷的陣列是否需要被剔除。如果需要剔除,則傳回 false,否則傳回 true。最終,過濾後的陣列就是我們需要的結果。
使用案例:
$data = [ ['name' => 'Tom', 'age' => 20], ['name' => 'Jerry', 'age' => 18], ['name' => 'Andy', 'age' => 22], ['name' => 'John', 'age' => 25] ]; $remove = [ ['name' => 'Tom', 'age' => 20], ['name' => 'John', 'age' => 25] ]; $result = removeArray($data, $remove); print_r($result);
輸出結果:
Array ( [1] => Array ( [name] => Jerry [age] => 18 ) [2] => Array ( [name] => Andy [age] => 22 ) )
方法二:使用 array_udiff 函數
另一個方法是使用 array_udiff 函數。此函數用於計算數組的差集,其可以自訂一個回呼函數進行數組的比較,從而實現所需的功能。
具體實作如下:
function removeArray($arr, $remove) { return array_udiff($arr, $remove, function ($a, $b) { return ($a == $b) ? 0 : 1; }); }
在上述程式碼中,我們與方法一相似,定義了一個名為 removeArray 的函數。函數接受兩個參數 $arr 和 $remove 分別表示需要從中剔除陣列的陣列集合和需要被剔除的陣列集合。
我們使用 array_udiff 函數對 $arr 陣列和 $remove 陣列進行比較,執行自訂函數,比較陣列中的元素並傳回結果。
使用案例:
$data = [ ['name' => 'Tom', 'age' => 20], ['name' => 'Jerry', 'age' => 18], ['name' => 'Andy', 'age' => 22], ['name' => 'John', 'age' => 25] ]; $remove = [ ['name' => 'Tom', 'age' => 20], ['name' => 'John', 'age' => 25] ]; $result = removeArray($data, $remove); print_r($result);
輸出結果:
Array ( [1] => Array ( [name] => Jerry [age] => 18 ) [2] => Array ( [name] => Andy [age] => 22 ) )
綜上所述,從一個二維陣列中剔除某些陣列的實作方法有兩種,分別是使用array_filter 函數和array_udiff 函數。二者都是常用的方法,具體使用哪一種取決於自身需求。
要注意的是,如果數組中存在相同的子數組,方法一(array_filter)不能很好地工作,因為 PHP 中無法直接比較數組,需要使用 array_diff_assoc 函數。
以上是php怎麼剔除二維數組中的某子數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!