这是我的代码:
foreach($datawallright['adds'] as &$ad){
$ad['img'] = get_ad_pic_url($this->em->getReference("models\MmAds",$ad['id']),'/crop_');
$ad['description'] = ucfirst(strip_tags(html_entity_decode(mb_strtolower(str_replace(array("___","---"),"",$ad['description']), "UTF-8"))));
$ad['titleurl'] = title_url($ad['title']);
}
foreach($datawallright['adds'] as $ad){
$this->load->view("view_wallpage_add",array("ad"=>$ad,"isuserwall"=>$isuserwall));
}
我有两个 for 循环遍历同一个数组。这两个for循环中分配的变量是相同的。奇怪的是当它迭代第二个 for 循环时。第一个 n-1 元素是正确的,但在最后一个元素的位置出现了最后一个元素的前一个元素。我可以在一个 for 循环中完成这一切。我可以更改变量 $ad 的名称,然后它就可以正常工作,但我想知道发生了什么。
发生的情况是第一个循环通过引用进行迭代,因此当第二个循环尝试将“当前项”分配给$ad
除了更新之外,它实际上还更新了您的数组内容$ad
.
最简单的修复方法是添加一个unset ($ad)
紧接在第一个之后foreach
这样 PHP 就不会考虑名称$ad
从那时起的参考。
这样做的需要(或者稍后会遭受对参考的隐藏更新)是 PHP 中最丑陋的事情之一;就我个人而言,我非常热衷于附加一个unset
通过引用迭代之后,即使这是函数中的最后一条语句。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)