我们如何迭代实现迭代器的对象

时间:2010-09-01 19:41:21

标签: php zend-framework

Iam渲染菜单(使用Zend框架)(zend_navigation)

如果页面的值为“myPage”,我正在做的是将页面作为标签 然后iam设置新的URI与页面按预期

$it = new RecursiveIteratorIterator(
$container, RecursiveIteratorIterator::SELF_FIRST);

 foreach ($it as &$page) {
   $label = $page->label;
   if($label = "MyPage"){
    $newuri = "mypage.php?stcode=".$stcode."&cde=".$cde;            
    $page->setUri($newuri);
}           

}

在上面的声明中我遇到了错误 “迭代器不能与foreach一起使用”。 我想使用引用,以便基于标签我可以将页面指向新的uri

现在我的问题和菜单中的所有菜单项都获得相同的URI。

1 个答案:

答案 0 :(得分:6)

没有& ?默认情况下,对象在PHP中通过引用传递,因此调用setUri应该(理论上)修改原始对象。另请注意,您的if语句正在执行赋值($ label =“MyPage”)而不是比较($ label ==“MyPage”)。

假设$ container是你的Zend Navigation对象,该组件有方法可以使这更容易,所以你应该能够简化你的代码:

$page = $container->findByLabel('MyPage');
$page->setUri("mypage.php?stcode=".$stcode."&cde=".$cde);

有关更多示例,请参阅http://framework.zend.com/manual/en/zend.navigation.containers.html#zend.navigation.containers.finding