我有以下几个品牌:
$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>';
}
所有这一切都很好。但是,为了在导航菜单中指明选择了哪个品牌,链接内部需要class="tactive"
。为了弄清楚选择了哪个品牌,我可以使用下面的内容,并将其插入上面代码中//See note below
评论的位置。 ($currentbrand
将在包含所有页面数据的文件中定义:
if ($_GET[detail]=$currentbrand) {
echo 'class="tactive"';
}
但是,为了使每个链接都不被标记为活动,这需要在foreach
循环之外完成。我可以中断foreach
循环,添加我需要的代码,然后恢复它以便将链接的最后部分放在那里吗?
提前致谢。
答案 0 :(得分:0)
为了使每个链接都不被标记为活动,这需要在foreach循环之外完成
这是错误的假设。你真正需要做的是比较而不是 assign :
if ($_GET['detail'] == $currentbrand) {
echo 'class="tactive"';
}
否则表达式将由$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
);
}