如何在PHP中使用ArrayIterator向元素添加键?
除了基本参数引用之外,PHP站点上没有关于如何在PHP中使用ArrayIterator向元素添加键?,php,arrays,foreach,append,arrayiterator,Php,Arrays,Foreach,Append,Arrayiterator,除了基本参数引用之外,PHP站点上没有关于ArrayIterator对象的文档,所以我甚至不确定这是否可行 我从基本意义上理解了ArrayIterator的概念,如以下示例: $rows = new ArrayIterator(array('a', 'b', 'c')); foreach ($rows as $row) { echo "<p>This is row {$a}.</p>"; } 其思想是,在本例中,'b'在其余父元素(a、b、c)的末尾(无需按顺序
ArrayIterator
对象的文档,所以我甚至不确定这是否可行
我从基本意义上理解了ArrayIterator
的概念,如以下示例:
$rows = new ArrayIterator(array('a', 'b', 'c'));
foreach ($rows as $row) {
echo "<p>This is row {$a}.</p>";
}
其思想是,在本例中,'b'
在其余父元素(a、b、c)的末尾(无需按顺序处理)有许多子元素,应该像解析父元素一样对其进行解析
通常我会用
foreach ($child as $c) {
$rows->append($c);
}
但在本例中,$child
是一个数组,其中包含一个我要维护的键
foreach ($child as $key => $c) {
$rows->append($c); // but what about $key???
}
我不想在末尾添加数组作为元素,我想在父列表中添加键和值,这样我们就可以得到
$rows = array(
'a' => ...,
'b' => ...,
'c' => ...,
'd' => ...,
'e' => ...,
'f' => ...
);
问题:是否可以使用键从foreach循环中向当前迭代的数组追加元素?
ArrayInterator
实现ArrayAccess
接口。这意味着它是可用的,您可以为指定的偏移量指定一个值
如文件所述:
以便能够直接修改循环中的数组元素
在$value前面加上&。在这种情况下,该值将由
参考资料
但在这种情况下不需要
本刊:
a 1
c 2
d 3
e 4
f 5
.
foreach($c作为子项)$rows->append($c)代码>?@u_mulder,这将导致添加新元素,但使用数字键,而不是原始键“d”。抱歉,这里有一个错误,这是一个打字错误,现在正在更正。@u\u mulder更新了示例以使其更清晰。我知道了,但我认为没有办法为ArrayIterator
。@u\u mulder似乎是这样,但这似乎也是一个很大的缺点,希望有另一种未经记录的方法来完成;)毕竟,他们让你读->key()
,但不写?太好了!没有意识到我可以混合访问方法,学到了一些新东西:)干杯!我刚刚意识到这里不需要&
。。。刚刚更新了我的答案
$rows = array(
'a' => 1,
'b' => array('d' => 3, 'e' => 4, 'f' => 5),
'c' => 2
);
$rows = new ArrayIterator($rows);
foreach ($rows as $key => $row) {
if (is_array($row)) {
foreach ($row as $key => $c) {
$rows[$key] = $c;
}
// skip this
continue;
}
echo $key, " ", $row, "\n";
}
a 1
c 2
d 3
e 4
f 5