【发布时间】:2015-11-29 22:09:52
【问题描述】:
我有一个多维数组,其中包含可变数量的数据级别。也就是说,我无法确定达到Goal 级别需要多少次迭代,这是一个数组。像这样的:
[
'key1' = 'value1',
'key2' = 'value2',
'key3' = [
'key4' => [
'key5' => 'value3'
],
'key6' => 'value4'
],
'key7' => [
'Goal' => [
'value5',
'value6',
'value7'
]
],
'key8' => 'value8'],
'key9' => [
'Goal' => [
'value9',
'Foo',
'value10'
]
]
]
array_walk_recursive 和ArrayIterator 我都试过了,但似乎都没有让我到达我需要的地方。
我需要遍历数组的每个元素,如果键是Goal,请检查值(例如Goal 保存的数组)并查看该数组是否包含值Foo。
如果在数组中找到Foo,我需要在数组中添加一个新值(除了Foo--所以称它为Bar)然后继续,因为可能还有更多@987654332 @ 在父数组中。
当我们找到Goal 时,有没有办法“停止”迭代器,无需进一步迭代,然后执行array_search 操作?
编辑:尝试这些方面的东西--
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $key => $value)
{
if($key == 'Goal')
{
if (is_array($value)) {
if(array_search('Foo', $value)) {
$value[] = 'Bar';
}
}
}
}
【问题讨论】:
-
显示您当前拥有的代码,它至少可以清除您正在尝试做的事情
-
这样的? eval.in/427733
-
@RobbieAverill -- 这几乎是需要的,但有两件事 -- 1) 数组中可以有多个
Goals,2) 我需要返回整个数组,其中Bar添加,而不仅仅是Goal节点。谢谢,你让我离我更近了!