首页  >  文章  >  后端开发  >  如何高效地查找多维数组中与特定键关联的值?

如何高效地查找多维数组中与特定键关联的值?

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