在多维数组中查找匹配键的值
在复杂的多维数组中搜索特定键可能是一项具有挑战性的任务。像所提供的那样的自定义递归函数尝试解决这一挑战。然而,它的递归实现可能会遇到问题。
原始函数遍历数组,如果找到,则返回与所需键关联的值。但是,如果该值是一个数组(代表一个文件夹),它会在子数组(新的干草堆)上递归调用自身。这种递归可能会出现问题。
一个潜在的解决方案涉及利用 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中文网其他相关文章!