在多維數組中尋找匹配鍵的值
在複雜的多維數組中搜尋特定鍵可能是一項具有挑戰性的任務。像所提供的那樣的自訂遞歸函數嘗試解決這一挑戰。然而,它的遞歸實現可能會遇到問題。
原始函數遍歷數組,如果找到,則傳回與所需鍵關聯的值。但是,如果該值是一個陣列(代表一個資料夾),它會在子數組(新的乾草堆)上遞歸調用自身。這種遞歸可能會出現問題。
一個潛在的解決方案涉及利用 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中文網其他相關文章!