Php 我们如何迭代实现迭代器的对象
Iam渲染菜单(使用Zend framework)(Zend_导航) 如果页面的值为“myPage”,我要做的就是将页面作为标签 然后,iam按预期设置页面的新URIPhp 我们如何迭代实现迭代器的对象,php,zend-framework,Php,Zend Framework,Iam渲染菜单(使用Zend framework)(Zend_导航) 如果页面的值为“myPage”,我要做的就是将页面作为标签 然后,iam按预期设置页面的新URI $it = new RecursiveIteratorIterator( $container, RecursiveIteratorIterator::SELF_FIRST); foreach ($it as &$page) { $label = $page->label; if($label = "
$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一起使用”。
我想使用reference,以便根据标签将页面指向新的uri
现在,我的问题和菜单中的所有菜单项都得到了相同的URI。没有&,它能工作吗?在PHP中,默认情况下对象是通过引用传递的,因此调用setUri(理论上)应该修改原始对象。还请注意,if语句正在执行赋值($label=“MyPage”)而不是比较($label==“MyPage”) 假设$container是您的Zend导航对象,该组件有一些方法可以简化此操作,因此您应该能够将代码简化为:
$page = $container->findByLabel('MyPage');
$page->setUri("mypage.php?stcode=".$stcode."&cde=".$cde);
有关更多示例,请参阅。如果没有&,它可以工作吗?在PHP中,默认情况下对象是通过引用传递的,因此调用setUri(理论上)应该修改原始对象。还请注意,if语句正在执行赋值($label=“MyPage”)而不是比较($label==“MyPage”) 假设$container是您的Zend导航对象,该组件有一些方法可以简化此操作,因此您应该能够将代码简化为:
$page = $container->findByLabel('MyPage');
$page->setUri("mypage.php?stcode=".$stcode."&cde=".$cde);
有关更多示例,请参见