PHP foreach()跳出本次或当前循环与终止循环方法

PHPforeach()跳出本次或当前循环与终止循环方法

 PHP中用foreach()循环中,想要在循环的时候,当满足某个条件时,想

复制代码

$arr = array('a','b','c','d','e');
$html = '';
foreach($arr as $key => $value){
    if($value=='b'){
        $html .= $value;
        continue; // 当 $value为b时,跳出本次循环
    }
    if($value=='c'){
        $html .= $value;
        break; // 当 $value为c时,终止循环
    }
    $html .= $value;
}
echo $html; // 输出: ab

复制代码

 

下面是自己的实际例子

//父级栏目
    public function parentList($id)
    {
        //查询该栏目下所有子类数据
        $categoryData = db("category")->where("id=".$id)->find();
        //dump($categoryData);
        if(!$categoryData){
            $this->error("参数错误");
        }else{
            $this->assign('categoryData',$categoryData);
            //查询该栏目下所有子类数据即 pid=$id
            $category = db("category")->select();

            $praProductData = $this->toLayer($category);
       //dump($praProductData);
            foreach($praProductData as $k=>$v) {
                //如果有子类目
                if (!empty($v['zilei']) && $v['id']==$id) {
                    $praductData = Db::table("ven_article")
                        ->alias('a')
                        ->join('ven_category w','a.cid=w.id')
                        ->where("a.status=1 and w.pid='".$id."'")
                        ->field("a.id,a.title,a.faceimg,a.time_report,a.resume,a.cid,w.name")
                        ->order('a.id DESC')
                        ->paginate(6);
                        //dump($praductData);
                        break;
                }else{
                    //没有子类
                    if ($v['id'] == $id) {
                        $praductData = Db::table("ven_article")
                                ->alias('a')
                                ->join('ven_category w','a.cid=w.id')
                                ->where("a.status=1 and a.cid=".$id)
                                ->field("a.id,w.name")
                                ->order('a.id DESC')
                                ->paginate(6);

                        //dump($praductData);
                        break;
                    }
                }
            }

            $data = $praductData->toArray()['data'];//或者$data = $praductDatas->all();

            if($data){
                $this->assign('a',1);
            }
            $page = $praductData->render();

            $this->assign('Page',$page);
            $this->assign("newPraProduct",$praductData);

        }

        return view("ParentList");
    }  

打印$praProductData结果如下:

array(5) {
  [0] => array(9) {
    ["id"] => int(1)
    ["pid"] => int(0)
    ["path"] => string(3) "0-1"
    ["name"] => string(9) "风幕柜"
    ["status"] => int(1)
    ["seo_title"] => string(0) ""
    ["seo_keys"] => string(0) ""
    ["seo_desc"] => string(0) ""
    ["zilei"] => array(2) {
      [0] => array(9) {
        ["id"] => int(2)
        ["pid"] => int(1)
        ["path"] => string(5) "0-1-2"
        ["name"] => string(21) "饮料超市风幕柜"
        ["status"] => int(1)
        ["seo_title"] => string(0) ""
        ["seo_keys"] => string(21) "饮料超市风幕柜"
        ["seo_desc"] => string(21) "饮料超市风幕柜"
        ["zilei"] => array(0) {
        }
      }
      [1] => array(9) {
        ["id"] => int(37)
        ["pid"] => int(1)
        ["path"] => string(6) "0-1-37"
        ["name"] => string(15) "超市风幕柜"
        ["status"] => int(1)
        ["seo_title"] => string(0) ""
        ["seo_keys"] => string(15) "超市风幕柜"
        ["seo_desc"] => string(15) "超市风幕柜"
        ["zilei"] => array(0) {
        }
      }
    }
  }
  [1] => array(9) {
    ["id"] => int(33)
    ["pid"] => int(0)
    ["path"] => string(4) "0-33"
    ["name"] => string(15) "环岛风幕柜"
    ["status"] => int(1)
    ["seo_title"] => string(15) "环岛风幕柜"
    ["seo_keys"] => string(15) "环岛风幕柜"
    ["seo_desc"] => string(15) "环岛风幕柜"
    ["zilei"] => array(0) {
    }
  }
  [2] => array(9) {
    ["id"] => int(46)
    ["pid"] => int(0)
    ["path"] => string(4) "0-46"
    ["name"] => string(9) "点菜柜"
    ["status"] => int(1)
    ["seo_title"] => string(9) "点菜柜"
    ["seo_keys"] => string(9) "点菜柜"
    ["seo_desc"] => string(9) "点菜柜"
    ["zilei"] => array(0) {
    }
  }
  [3] => array(9) {
    ["id"] => int(48)
    ["pid"] => int(0)
    ["path"] => string(4) "0-48"
    ["name"] => string(9) "鲜花柜"
    ["status"] => int(1)
    ["seo_title"] => string(9) "鲜花柜"
    ["seo_keys"] => string(9) "鲜花柜"
    ["seo_desc"] => string(9) "鲜花柜"
    ["zilei"] => array(0) {
    }
  }
  [4] => array(9) {
    ["id"] => int(53)
    ["pid"] => int(0)
    ["path"] => string(4) "0-53"
    ["name"] => string(9) "药品柜"
    ["status"] => int(1)
    ["seo_title"] => string(0) ""
    ["seo_keys"] => string(0) ""
    ["seo_desc"] => string(0) ""
    ["zilei"] => array(2) {
      [0] => array(9) {
        ["id"] => int(54)
        ["pid"] => int(53)
        ["path"] => string(7) "0-53-54"
        ["name"] => string(15) "药品阴凉柜"
        ["status"] => int(1)
        ["seo_title"] => string(0) ""
        ["seo_keys"] => string(0) ""
        ["seo_desc"] => string(0) ""
        ["zilei"] => array(0) {
        }
      }
      [1] => array(9) {
        ["id"] => int(55)
        ["pid"] => int(53)
        ["path"] => string(7) "0-53-55"
        ["name"] => string(15) "药品冷藏柜"
        ["status"] => int(1)
        ["seo_title"] => string(0) ""
        ["seo_keys"] => string(0) ""
        ["seo_desc"] => string(0) ""
        ["zilei"] => array(0) {
        }
      }
    }
  }
}

  

要跳出本次循环继续执行下次循环,或者满足某个条件的时候,终止foreach()循环,分别会用到:continue 与 break。

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...