![](/img/trans.png)
[英]php foreach in foreach in foreach / for loop overwrite with last
[英]Strange variable overwrite in foreach loop
这一定是显而易见的,但是我一直坚持下去,并且在过去的两个小时中无法解决。
我有这段代码:
foreach($idMap as $menuId=>$pageId)
{
echo('$this->update("menus_items", SET "link = /content/show?id='.$pageId.'" WHERE id = '.$menuId.');'."\n");
$this->update
(
'menus_items',
array('link'=>'/content/show?id='.$pageId),
array('id = '.$menuId)
);
}
echo
部分按预期工作(每个项目的$pageId
不同,取自$idMap
),而Yii的CDbCommand::update()
获取wako并使$pageId
等于所有循环迭代的最后一个值。
换句话说,如果我有20个菜单项,并且结果集中的最后一个项具有pageId
= 18
,那么在使用CDbCommand::update()
,我会将所有菜单项都设置为该最后一个值。
这里肯定有一些变量覆盖,但是我在过去的两个小时内找不到它,尤其是, echo
仅放在上面一行就可以了。 有人可以帮忙吗?
猜测,但是$this->update()
期望其绑定参数使用单个数组?
$this->update
(
'menus_items',
array(
'link' => '/content/show?id='.$pageId,
'id' => $menuId
)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.