首頁  >  文章  >  後端開發  >  如何有效率地尋找多維數組中與特定鍵關聯的值?

如何有效率地尋找多維數組中與特定鍵關聯的值?

Susan Sarandon
Susan Sarandon原創
2024-11-04 14:44:58753瀏覽

How Can I Efficiently Find a Value Associated with a Specific Key in a Multidimensional Array?

在多維數組中尋找匹配鍵的值

在複雜的多維數組中搜尋特定鍵可能是一項具有挑戰性的任務。像所提供的那樣的自訂遞歸函數嘗試解決這一挑戰。然而,它的遞歸實現可能會遇到問題。

原始函數遍歷數組,如果找到,則傳回與所需鍵關聯的值。但是,如果該值是一個陣列(代表一個資料夾),它會在子數組(新的乾草堆)上遞歸調用自身。這種遞歸可能會出現問題。

一個潛在的解決方案涉及利用 PHP 的 RecursiveArrayIterator。在 5.6 及更高版本中,利用此迭代器提供了一種更有效率、更可靠的方法:

function recursiveFind(array $haystack, $needle)
{
    $iterator  = new RecursiveArrayIterator($haystack);
    $recursive = new RecursiveIteratorIterator(
        $iterator,
        RecursiveIteratorIterator::SELF_FIRST
    );
    foreach ($recursive as $key => $value) {
        if ($key === $needle) {
            return $value;
        }
    }
}

此函數遞歸迭代,檢查整個陣列中的鍵和值。遇到匹配的鍵時,它會傳回對應的值。

或者,對於PHP 5.6 及更高版本,生成器可以幫助搜尋多個匹配的鍵:

function recursiveFind(array $haystack, $needle)
{
    $iterator  = new RecursiveArrayIterator($haystack);
    $recursive = new RecursiveIteratorIterator(
        $iterator,
        RecursiveIteratorIterator::SELF_FIRST
    );
    foreach ($recursive as $key => $value) {
        if ($key === $needle) {
            yield $value;
        }
    }
}

透過使用生成器,您可以迭代所有匹配的值,而不僅僅是第一個。在處理複雜且深度嵌套的陣列時,此功能非常有價值。

以上是如何有效率地尋找多維數組中與特定鍵關聯的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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