Php 中断并恢复Foreach循环
我有以下一系列品牌:Php 中断并恢复Foreach循环,php,foreach,Php,Foreach,我有以下一系列品牌: $brand=array('brand1','brand2','brand3'); 目标是在导航菜单中为每个品牌创建一个链接,因此我可以运行以下操作来实现这一点: sort($brand); foreach ($brand as &$bval) { $bval2 = strtolower($bval); $bval3 = str_replace(" ", "-", $bval2); echo '<li><a href="/?detail='.$b
$brand=array('brand1','brand2','brand3');
目标是在导航菜单中为每个品牌创建一个链接,因此我可以运行以下操作来实现这一点:
sort($brand);
foreach ($brand as &$bval) {
$bval2 = strtolower($bval);
$bval3 = str_replace(" ", "-", $bval2);
echo '<li><a href="/?detail='.$bval3.'"';
//See note below
echo '><span>'.$bval.'</span></a></li>';
}
但是,为了使每个链接都不被标记为活动,这需要在foreach
循环之外进行。我是否可以中断foreach
循环,添加我需要的代码,然后恢复它,以便将链接的最后一部分放在那里
提前谢谢
为了使每个链接都不被标记为活动的,这需要在foreach循环之外完成
这是错误的假设。您真正需要做的是比较,而不是分配:
否则,表达式将由$currentbrand
是真还是假来确定
此外,还可以稍微重写代码,减少不需要的变量和字符串连接的数量。一个例子可能是:
sort($brand);
foreach ($brand as $bval) {
$alias = str_replace(' ', '-', strtolower($bval));
printf(
'<li><a href="/?detail=%s" class="%s"><span>%s</span></a></li>',
$alias,
isset($_GET['detail']) && $alias === $_GET['detail'] ? 'tactive' : '',
$bval
);
}
排序($brand);
foreach(品牌为$bval){
$alias=str_replace(“”,“-”,strtolower($bval));
printf(
“”,
$alias,
isset($\u GET['detail'])&&&$alias===$\u GET['detail']?“触觉”:“,
$bval
);
}
感谢您的回复!这是一个很好的观点,我不知怎么的忽略了这一点,但是当我比较而不是赋值时,所有的链接仍然被标记为活动的。你可以发布更多的代码吗。例如,$currentbrand
变量未在您发布的摘录中定义。你试过其他代码吗?是的,新代码也不起作用$currentbrand
将只是我第一篇文章中显示的$brand
数组中的一个值,具体取决于显示的页面。我在关于url值的示例中遇到了一个错误,请看一看。好吧,看起来好像您的示例确实有效,我想我以前没有复制所有的示例。谢谢你的帮助!
if ($_GET['detail'] == $currentbrand) {
echo 'class="tactive"';
}
sort($brand);
foreach ($brand as $bval) {
$alias = str_replace(' ', '-', strtolower($bval));
printf(
'<li><a href="/?detail=%s" class="%s"><span>%s</span></a></li>',
$alias,
isset($_GET['detail']) && $alias === $_GET['detail'] ? 'tactive' : '',
$bval
);
}