если я зацикливаюсь над массивом, и, находясь в середине одной из циклов, я обнаруживаю небольшую проблему, меняю … что-то … и нужно попробовать еще раз … есть ли способ вернуться к вершина цикла, не захватывая следующее значение из массива?
Я сомневаюсь, что это существует, но это будет какое-то ключевое слово, как continue
или break
. на самом деле, это было бы очень похоже на continue
, за исключением того, что он не получает следующий элемент, он поддерживает то, что он имеет в памяти.
если ничего не существует, могу ли я вставить что-то в массив таким образом, чтобы он стал следующим ключом / значением в цикле?
возможно, с этим будет легче (array_shift ()) …
или я полагаю, что рекурсивная функция внутри цикла может работать.
ну, мой вопрос развивается, поскольку я набираю это, поэтому, пожалуйста, просмотрите этот псевдо-код:
foreach($storage_locations as $storage_location) { switch($storage_location){ case 'cookie': if(headers_sent()) { // cannot store in cookie, failover to session // what can i do here to run the code in the next case? // append 'session' to $storage_locations? // that would make it run, but other items in the array would run first... how can i get it next? } else { set_cookie(); return; } break; case 'session': set_session(); return; break; } }
я уверен, что нет ключевого слова, чтобы изменить значение, протестированное против в среднем потоке переключателя … так как я должен реорганизовать этот код, чтобы получить мой переход на другой ресурс?
Не с foreach
, но с более ручной итерацией массива:
while (list($key, $value) = each($array)) { if (...) { reset($array); // start again } }
http://php.net/each
http://php.net/reset
Похоже, что простое проваливание могло бы сделать трюк:
switch ($storage_location) { case 'cookie': if (!headers_sent()) { set_cookie(); break; } // falls through to next case case 'session':