我有一个对象数组.对象主要有一堆属性,因为它们是元数据对象.
所以就像
$objects[]是像一串具有类似性质的项目:
object->item1,object->item2,等.
我想为每个对象添加一些东西,所以......
foreach ($objects as &$object) {
$object->newItem=(something I compute);
}
Run Code Online (Sandbox Code Playgroud)
然后,我想在html中将这些对象显示为列表.所以,我去:
foreach ($objects as $object) {
<li><?php object output stuff here ?></li>
}
Run Code Online (Sandbox Code Playgroud)
好.现在,它工作正常,除了最后一个对象被丢弃,倒数第二个对象显示两次.WTF?
你能理解这个吗?
Nik*_*kiC 36
如果通过引用进行迭代,则始终取消设置迭代变量:
foreach ($objects as &$object) {
// some code
}
unset($object);
Run Code Online (Sandbox Code Playgroud)
摘自foreach文档:
即使在foreach循环之后,$ value和最后一个数组元素的引用仍然存在.建议通过unset()销毁它.
如果您想了解代码行为方式的原因,可以进一步阅读:References和foreach