конвертировать foreach в цикл while - PullRequest
0 голосов
/ 07 июня 2011

Привет, ребята, мне нужно преобразовать цикл 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>';
        }       
    }

Мой последний пост, когда я попал в беду.

1 Ответ

1 голос
/ 07 июня 2011

Если вы просто хотите перебрать массив, это должно быть сделано:

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

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

Эта функция очень похожа на цикл for () или foreach (), если вы хотите выйти из циклакогда определенное условие выполнено, вы можете сделать это следующим образом:

$active = true;
$iteration = 0;

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

Примечание. Вы должны вставить некоторый код, который сбрасывает итератор или устанавливает $ active в значение false, если итератор становится больше или равенразмер массива значений, иначе вы столкнетесь с неприятностями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...