【问题标题】:PHP Laravel break foreach loop 2 timesPHP Laravel 打破 foreach 循环 2 次
【发布时间】:2018-07-01 20:46:55
【问题描述】:

有三个foreach循环,最后一个foreach循环有一个if条件,

foreach ($candidate_data as $cd) {
        $edu_data=DB::table('applicant_edu_info')
        ->where('applicant_id',$cd->ap_id)
        ->get();
            foreach($edu_data as $ed){
                foreach($neededDegree as $nd){
                    if($neededDegree->edu_degree_id==$ed->edu_degree_id){
                        $education_data[$cd->ap_id]=$neededDegree->name;

                    }
                }
            }
    }

我需要的是,如果条件为真,那么我想中断两个循环并从第一个 foreach 循环继续运行。请帮忙。

【问题讨论】:

  • 你应该找到一种方法来简化你的嵌套循环。查询每个循环都是浪费内存。为什么不做一个 IN 语句呢?

标签: php laravel foreach


【解决方案1】:

在 PHP 中你可以使用 break 的可选参数。

使用break 2;

foreach ($candidate_data as $cd) {
        $edu_data=DB::table('applicant_edu_info')
        ->where('applicant_id',$cd->ap_id)
        ->get();
            foreach($edu_data as $ed){
                foreach($neededDegree as $nd){
                    if($neededDegree->edu_degree_id==$ed->edu_degree_id){
                        $education_data[$cd->ap_id]=$neededDegree->name;
                         break 2;

                    }
                }
            }
    }

break 2 将中断两个循环。

文档:http://php.net/manual/en/control-structures.break.php

【讨论】:

    【解决方案2】:

    你可以在程序中使用goto跳转到另一个section

    foreach ($candidate_data as $cd) {
        $edu_data=DB::table('applicant_edu_info')
        ->where('applicant_id',$cd->ap_id)
        ->get();
            foreach($edu_data as $ed){
                foreach($neededDegree as $nd){
                    if($neededDegree->edu_degree_id==$ed->edu_degree_id){
                        $education_data[$cd->ap_id]=$neededDegree->name;
                        goto targetLocation;
    
                    }
                }
            }
          targetLocation:
    }
    

    使用goto,您可以将target 设置在您想要的任何位置。

    【讨论】:

    • 那一个很好,但在特定位置的情况下也可能有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-08
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多