尋找關聯數組列之間的差異
您有兩個包含關聯資料行的數組,並且您希望根據以下條件過濾第二個數組第一個數組中特定列的值。使用 array_diff() 是不夠的,因為它會比較整個行,而不僅僅是所需的列。
要解決這個問題,您可以利用 array_udiff() 函數,它允許您定義自訂比較函數。此函數應僅比較所需列的值,在本例中為「ITEM」鍵。
以下是實現此功能的方法:
function udiffCompare($a, $b) { return $a['ITEM'] - $b['ITEM']; } $arrdiff = array_udiff($arr2, $arr1, 'udiffCompare');
這定義了自訂比較函數 udiffCompare減去正在比較的兩行的「ITEM」值。此減法的結果決定行是否相等、不同或哪一個較大。
透過將udiffCompare 作為第三個參數傳遞給array_udiff(),您實際上是在告訴函數使用此自訂比較函數根據「ITEM」列確定$arr2 中的哪些元素與$arr1 中的元素不同。
此程式碼的輸出將是一個僅包含$arr2 中不存在於$arr1 中的元素,保留原始數組結構:
Array ( [3] => Array ( [ITEM] => 4 ) )
此演示允許您根據另一個數組中的特定列值有效過濾一個數組,同時保留原始數組結構。
以上是如何根據特定列高效比較和過濾關聯數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!