在平面數組中尋找與值匹配的數組行
在此場景中,您有一個包含多個列的數組$ arr1,且第二個陣列$arr2,包含一組ID 值。目標是過濾 $arr1 並僅傳回包含 $arr2 中存在的 ID 值的行。
此問題的有效解決方案在於利用 array_uintersect() 函數,該函數執行兩個數組的排序交集使用自訂回調函數。此函數對兩個輸入數組中的元素對進行操作,並根據比較結果傳回 -1、0 或 1。
自訂回調:
自訂我們在array_uintersect() 中定義的回呼函數將$arr1 中的ID 欄位(如果存在)或整個元素本身(如果該列未定義)與$arr2 中的值進行比較。
使用三元組運算符,如果列存在,我們將 $a['id'] 分配給 $a,否則分配給 $a 本身。同樣,我們對 $b 執行相同的操作。這使我們能夠處理 ID 列可能不存在於所有行中的情況。
排序與效率:
Array_uintersect() 利用排序來有效比較元素。預設情況下,它對兩個輸入數組進行數字排序。由於我們正在比較 ID 值(在您的情況下可能是數字),因此這種排序可以縮短執行時間。
範例用法:
為了示範此解的工作原理,我們可以將其應用於提供的陣列:
$ resultingArray 將包含$arr1 中的行,其中ID 值與$arr2 中的ID 值相符。
以上是如何透過匹配平面數組中的值來過濾數組行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!