首頁 >後端開發 >php教程 >如何根據值高效率地找到 PHP 多維數組中的鍵?

如何根據值高效率地找到 PHP 多維數組中的鍵?

Patricia Arquette
Patricia Arquette原創
2024-12-09 20:59:15557瀏覽

How to Efficiently Find a Key in a PHP Multidimensional Array by its Value?

PHP 多維數組搜尋(按值查找鍵)

在此場景中,您有一個代表產品集合的多維數組。每個產品都由名稱、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中文網其他相關文章!

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