У нас дан цикл PHP: <?php $a = array ('1' =>"asasd", '2'=>"asdas", '3' =>"sdsdasd", '4'=>"asdasdas"); for (reset($a); ($k=key($a)); next($a)) echo "$k родился {$a[$k]}<br>"; ?> Данный скрипт работает. 1 соответствует asasd 2 соответствует asdas 3 соответствует sdsdasd 4 соответствует asdasdas Но я не могу понять, почему если задать нумерацию ключей не с "1" =>"asasd" а с "0" =>"asasd" то цикл перестанет работать. В книге которую я читаю написано что тогда $k = 0 цикл останавливается. Но почему? ну первый ключ равен "0" ему соответствует "asasd", дальше коретка сдвинулась и поехало дальше
В начале каждой итерации оценивается выражение expr2. Если оно принимает значение TRUE, то цикл продолжается, и вложенные операторы будут выполнены. Если оно принимает значение FALSE, выполнение цикла заканчивается.В твоем случае когда ключ 0,результат выражения оценивается как FALSE и цикл заканчивается
и вообще так не делают, т.к. читать сложно и это странно выглядит. Для прохода по массиву отлично подходит цикл foreach. PHP: foreach ($a as $key => $value) { echo "$key dfdfdfdf $value<br>"; }
Я знаю что так не делают. Просто я сейчас читаю книгу по PHP и там всё подробно расписывают. Поэтому я использовал такой цикл. Там расписано для понимания
тогда попробуй если понял - переписать на while, а потом даже на while (1), вот тогда ты реально достигнешь дзена