За последние 24 часа нас посетили 19468 программистов и 1610 роботов. Сейчас ищут 817 программистов ...

Массивы и циклы

Тема в разделе "PHP для новичков", создана пользователем Sinevik, 21 фев 2017.

  1. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    У нас дан цикл
    PHP:
    1. <?php
    2. $a = array ('1' =>"asasd", '2'=>"asdas", '3' =>"sdsdasd", '4'=>"asdasdas");
    3. for (reset($a); ($k=key($a)); next($a))
    4.     echo "$k родился {$a[$k]}<br>";
    5. ?>
    Данный скрипт работает.
    1 соответствует asasd
    2 соответствует asdas
    3 соответствует sdsdasd
    4 соответствует asdasdas

    Но я не могу понять, почему если задать нумерацию ключей не с "1" =>"asasd"
    а с "0" =>"asasd" то цикл перестанет работать. В книге которую я читаю написано что тогда $k = 0 цикл останавливается. Но почему? ну первый ключ равен "0" ему соответствует "asasd", дальше коретка сдвинулась и поехало дальше
     
    #1 Sinevik, 21 фев 2017
    Последнее редактирование модератором: 21 фев 2017
  2. alexblack

    alexblack Старожил

    С нами с:
    20 янв 2016
    Сообщения:
    640
    Симпатии:
    381
    В начале каждой итерации оценивается выражение expr2. Если оно принимает значение TRUE, то цикл продолжается, и вложенные операторы будут выполнены. Если оно принимает значение FALSE, выполнение цикла заканчивается.В твоем случае когда ключ 0,результат выражения оценивается как FALSE и цикл заканчивается
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    и вообще так не делают, т.к. читать сложно и это странно выглядит. Для прохода по массиву отлично подходит цикл foreach.

    PHP:
    1. foreach ($a as $key => $value) {
    2.   echo "$key dfdfdfdf $value<br>";
    3. }
     
  4. Sinevik

    Sinevik Новичок

    С нами с:
    7 фев 2017
    Сообщения:
    83
    Симпатии:
    4
    Я знаю что так не делают. Просто я сейчас читаю книгу по PHP и там всё подробно расписывают. Поэтому я использовал такой цикл. Там расписано для понимания
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тогда попробуй если понял - переписать на while, а потом даже на while (1), вот тогда ты реально достигнешь дзена