PHP foreach循环:在匹配特定条件后再循环一次

PHP foreach循环:在匹配特定条件后再循环一次,php,laravel,Php,Laravel,我正在使用laravel,并尝试使用foreach循环获取一个数组的值,然后再获取另一个值。我想知道解决这个问题的最佳做法是什么。到目前为止我已经试过了 $problems = $request->session()->get('problems'); $i = 0; foreach ($problems as $prob) { $problem = $prob; if($request->problem_id == $prob->id){

我正在使用laravel,并尝试使用foreach循环获取一个数组的值,然后再获取另一个值。我想知道解决这个问题的最佳做法是什么。到目前为止我已经试过了

$problems = $request->session()->get('problems');
$i = 0;
foreach ($problems as $prob) {
   $problem = $prob;
   if($request->problem_id == $prob->id){
         return 'Matched';
         die(); 
    }  
    $i++;  
}

把你的钱换成那样

$shouldQuit = false;
foreach ($problems as $prob) {
   $problem = $prob;
   if($shouldQuit)
       break;
   if($request->problem_id == $prob->id){
         $shouldQuit = true;
   }  
}

把你的钱换成那样

$shouldQuit = false;
foreach ($problems as $prob) {
   $problem = $prob;
   if($shouldQuit)
       break;
   if($request->problem_id == $prob->id){
         $shouldQuit = true;
   }  
}

尽管@Lucarnosky代码可以工作,但有一种更快的方法来处理这个问题

$problems = array_flip($request->session()->get('problems'));
if(key_exists($request->problem_id, $problems) return 'matched';
return 'problem not found';


尽管@Lucarnosky代码可以工作,但有一种更快的处理方法

$problems = array_flip($request->session()->get('problems'));
if(key_exists($request->problem_id, $problems) return 'matched';
return 'problem not found';


因此,在一个类似
[1,2,3,4]
的数组中,如果您有值3,则需要第四个元素?旁注:您可以移除
模具()。因为前面有一个
返回值
,所以它永远不会被触发。@Sérgio是的,没错!因此,在一个类似
[1,2,3,4]
的数组中,如果值为3,则需要第四个元素?旁注:您可以删除
die()。因为前面有一个
返回值
,所以它永远不会被触发。@Sérgio是的,没错!谢谢,正是我想要的@NooglersBIT很高兴听到这个消息,别忘了在答案处标记这个。你可能只需要返回或打断if语句,现在它将在匹配完成后再继续一个循环。谢谢,这正是我想要的@NooglersBIT很高兴听到这个消息,不要忘了在答案处标记这个。您可能只需要返回或中断if语句,现在它将在匹配完成后再继续一个循环。