Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 中断并恢复Foreach循环_Php_Foreach - Fatal编程技术网

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
      );
    }