簡體   English   中英

在foreach循環中奇怪的變量被覆蓋

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM