2011-06-06 172 views
0

嗨,大家好,我需要将foreach循环转换为while循环。 因为foreach循环确实会在迭代值时离开块。我需要while循环来继续循环。将foreach转换为while循环

我需要迭代数组的项目,但不是在foreach循环中。

foreach($values as $event) { 
     if($startDate >= $event['start'] && $startDate <= $event['end'] ) { 
      echo '<tr><td style="background:red;">Tijd: ' . strftime("== %H:%M ==", $startDate) . '<br/></td><td>'.$startDate.'</td></tr>'; 
     } 
     else { 
      echo '<tr><td style="background:green;">Tijd: ' . strftime("== %H:%M ==", $startDate) . '<br/></td><td>'.$startDate.'</td></tr>'; 
     }  
    } 

我最后一篇文章,当时陷入灾难srry。

+3

目前还不清楚“foreach循环在值被迭代时确实会离开块”的含义。 foreach循环遍历每个元素一次。如果你想迭代多次,然后把foreach循环放在for循环中! – 2011-06-06 22:02:16

+0

^- 就像Oli说的那样....通过我们循环的数据,如果它在到达结束后有'继续循环'? – Wrikken 2011-06-06 22:39:14

回答

1

如果您只是想通过数组进行迭代,这应该这样做:

$array_length = count($values); 
$iteration = 0; 

while($iteration < $array_length){ 
    $event = $values[$iteration]; 
    ... 
    $iteration++; 
} 

此功能很像一个为()或foreach()循环,如果你只是想退出循环时特定条件得到满足,你可以做这样的:

$active = true; 
$iteration = 0; 

while($active){ 
    $event = $values[$iteration]; 
    ... 
    if(some_condition){ $active = false; } 
    $iteration++; 
} 

注意:你应该把一些代码重置迭代器或设置$主动为false如果迭代增长大于或等于大小值数组,否则你将遇到麻烦

+0

tnx为我工作! – DownDown 2011-06-06 22:42:59