gpt4 book ai didi

php - 递归地搜索数组中的键

转载 作者:IT王子 更新时间:2023-10-28 23:59:37 25 4
gpt4 key购买 nike

private function find($needle, $haystack) {
foreach ($haystack as $name => $file) {
if ($needle == $name) {
return $file;
} else if(is_array($file)) { //is folder
return $this->find($needle, $file); //file is the new haystack
}
}

return "did not find";
}

嘿,此方法在关联数组中搜索特定键并返回与其关联的值。递归有问题。有什么线索吗?

最佳答案

也许这有点矫枉过正,但使用 RecursiveIterators 很有趣 :)

更新:也许它对旧版本的 PHP 来说太过分了,但是对于 >=5.6(特别是 7.0)我会毫无疑问地完全使用它。

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;
}
}
}

// Usage
foreach (recursiveFind($haystack, $needle) as $value) {
// Use `$value` here
}

关于php - 递归地搜索数组中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com