首頁  >  文章  >  後端開發  >  如何透過匹配平面數組中的值來過濾數組行?

如何透過匹配平面數組中的值來過濾數組行?

Barbara Streisand
Barbara Streisand原創
2024-10-23 16:41:02305瀏覽

How to Filter Array Rows by Matching Values from a Flat Array?

在平面數組中尋找與值匹配的數組行

在此場景中,您有一個包含多個列的數組$ 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中文網其他相關文章!

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