使用array_intersect_key 和array_flip 保留數組過濾中的鍵
在PHP 中, array_filter() 函數可用於從數組中刪除元素基於數組自訂回調函數。但是,回呼僅接收數組的值,而不是鍵。
考慮這樣的場景:您有一個關聯數組 ($my_array) 和索引數組中允許的鍵列表 ($allowed)。目標是過濾 $my_array 並刪除 $allowed 中不存在的所有鍵。
最有效的方法是利用 array_intersect_key 和 array_flip 函式。 array_intersect_key 函數根據另一個陣列中存在的鍵過濾數組鍵值對。 array_flip 函數翻轉數組的鍵和值,有效地建立值和鍵之間的映射。
透過組合這些函數,可以實現所需的過濾:
$filtered_array = array_intersect_key($my_array, array_flip($allowed));
這段程式碼將建立一個新數組($filtered_array),其中僅包含$my_array 中的鍵值對,其中鍵存在於$allowed 中。結果將與所需的輸出相同:
array( ["foo"] => 1 )
以上是在 PHP 中過濾數組時如何保留鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!