我需要为特定值的每个循环开始一个,ex foreach($somedata as $data)
这里我想开始做一些东西,只有当这些数据的值是""
我想在特定值之后开始做某事。
foreach($somedata as $data){
if($data == 'Something'){
//start processing, ignore all the before elements.
}
}
我尝试了break
continue
似乎无法正常工作
答案 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
的内容都将被执行。