基本参数引用之外的ArrayIterator
对象的PHP站点上没有文档,因此我甚至不确定这是否可行。
我在基本意义上理解ArrayIterator
的概念,例如:
$rows = new ArrayIterator(array('a', 'b', 'c'));
foreach ($rows as $row) {
echo "<p>This is row {$a}.</p>";
}
就我而言,行数组稍微复杂一些(虽然为了这个例子仍然简化了)...
$rows = array(
'a' => NULL,
'b' => array('d' => NULL, 'e' => NULL, 'f' => NULL),
'c' => NULL
);
$rows = new ArrayIterator($rows);
这个想法是'b'
在这种情况下,有许多子元素应该被解析,好像它们是父元素,在最后(不需要按顺序处理)其余父元素(a,b,c)。
通常我会使用......
foreach ($child as $c) {
$rows->append($c);
}
但是在这种情况下$child
是一个包含我想要维护的键的数组......
foreach ($child as $key => $c) {
$rows->append($c); // but what about $key???
}
我不想在最后添加数组作为元素,我想将键和值添加到父列表中,这样我们就可以了最终会.... [/ p>
$rows = array(
'a' => ...,
'b' => ...,
'c' => ...,
'd' => ...,
'e' => ...,
'f' => ...
);
问题:是否可以使用键在foreach循环中向当前迭代数组追加元素?
答案 0 :(得分:1)
module.exports = function(req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', '*');
res.header('Access-Control-Expose-Headers', 'myCookie');
if ('OPTIONS' == req.method) {
res.sendStatus(200);
} else {
next();
}
};
实现ArrayIterator
接口。这意味着offsetset
可用,您可以为指定的偏移量指定一个值。
如foreach文件所述:
为了能够直接修改循环内的数组元素 使用&amp;前面的$ value。在这种情况下,值将由 参考
但在这种情况下不需要。
ArrayAccess
此印刷品:
$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";
}