如何在PHP中启动具有特定值的foreach循环?

时间:2017-08-23 15:54:24

标签: php loops foreach

我需要为特定值的每个循环开始一个,ex foreach($somedata as $data)这里我想开始做一些东西,只有当这些数据的值是""

我想在特定值之后开始做某事。

foreach($somedata as $data){
  if($data == 'Something'){
  //start processing, ignore all the before elements.
  }
}

我尝试了break continue似乎无法正常工作

5 个答案:

答案 0 :(得分:6)

为清楚起见,在循环之前预处理数组可能更好。这样,循环中的逻辑可以完全专注于它应该做的事情。

$starter = 0;
foreach($somedata as $data){
  if($data == 'Something'){
    $starter = 1;
  }
  if(starter == 1){
    //start processing, ignore all the before elements.
  }
}

输出

$arr = ['foo', 'something', 'bar'];

$toProcess = array_slice($arr, array_search('something', $arr));

foreach ($toProcess as $element) {
    echo $element, PHP_EOL;
}

答案 1 :(得分:2)

如何使用指标变量来实现这一目标。

print("foo".count)

答案 2 :(得分:1)

无论您是否已经遇到所需的值,都需要保留一个标记:

$skip = true;

foreach (... as $data) {
    if ($data == 'something') {
        $skip = false;
    }

    if ($skip) {
        continue;
    }

    // do something
}

答案 3 :(得分:1)

$skip = true;
foreach($somedata as $data){

  if($data == 'Something'){
    $skip = false;
  }

  if($skip) {
   continue;
  }

  //start processing, ignore all before $skip == false.
}

答案 4 :(得分:0)

如果您只想从识别一个值的那一刻开始处理这些值,那么您可以使用一个标志:

$flag = false;
foreach($somedata as $data){
    if($flag OR $data == 'Something'){
        $flag = true;
        // processing some stuff
    }
}

将标记重置为true后,无论当前值是什么,您if的内容都将被执行。