在此場景中,您有一個代表產品集合的多維數組。每個產品都由名稱、slug、價格等屬性定義。您的目標是找到一種方法,使用 slug 屬性在陣列中搜尋特定產品,並傳回陣列中對應的鍵。
實現此目的的一種方法是利用 array_search 函數和 array_column 函數。這是封裝此方法的自訂函數:
function array_search_multidim(array $array, string $column, string $key) { return array_search($key, array_column($array, $column)); }
要使用此函數,您可以像這樣呼叫它:
$product_key = array_search_multidim($products, 'slug', 'breville-one-touch-tea-maker-BTM800XL');
這將在$products 陣列中搜尋產品slug屬性等於'breville-one-touch-tea-maker-BTM800XL' 並傳回其對應的金鑰。在此範例中,它將傳回值 1。
另一個可能的解決方案是基於 array_search 函數。對於這種方法,您需要使用 PHP 5.5.0 或更高版本:
$key = array_search('breville-one-touch-tea-maker-BTM800XL', array_column($products, 'slug'));
此程式碼實現與前面的範例相同的結果。
還有第三種方法使用array_walk_recursive遞歸地遍歷數組的所有元素並將slug 的值與給定的值進行比較value:
function array_walk_recursive_search($input, $needle, &$result = null) { if (is_array($input)) { foreach ($input as $key => $value) { array_walk_recursive_search($value, $needle, $result); } } else { if ($input === $needle) { $result = $key; } } }
可以如下調用該函數:
array_walk_recursive($products, 'breville-one-touch-tea-maker-BTM800XL', $product_key);
要注意的是,雖然array_walk_recursive方法更通用,可以處理任何類型的陣列結構,但它通常比其他方法慢。
整體而言,最佳使用方法取決於應用程式的特定需求和限制。然而,兩種最有效的方法是利用 array_search 和 array_column 函數。
以上是如何根據值高效率地找到 PHP 多維數組中的鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!