Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не совсем понимаю работу циклов (на примере)
Форумы портала PHP.SU » » Вопросы новичков » Не совсем понимаю работу циклов (на примере)

Страниц (1): [1]
 

1. MaxRAF - 04 Октября, 2011 - 07:05:25 - перейти к сообщению
Пробовал разобрать цикл на примере http://www.php.su/articles/?cat=examples&page=016, но не могу понять логику работы тела цикла и работу массива.

Нижу процитирую код и прокомментирую его от себя.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $arr = array (25, 636, 298, 3, 495, 67); //придумываем шесть чисел
  4. $cnt = count($arr); //присваиваем эти числа переменной $cnt
  5. $min = $max = $arr[0]; //ЗДЕСЬ НЕ ПОНЯТНА ЛОГИКА. Я это понимаю так: переменным $min и $max присваивается нулевой индекс массива, в данном случае 25. А ЗАЧЕМ ПРИСВАИВАТЬ ЕГО НЕ ПОНЯТНО.
  6. $index_min = $index_max = 0; //ЗДЕСЬ ТОЖЕ НЕ ПОНЯТНА ЛОГИКА. Я понимаю так: переменным $index_min и $index_max присваивается значение 0. ОПЯТЬ Ж НЕПОНЯТНО ЗАЧЕМ.
  7.  
  8. for ($i = 1; $i < $cnt; $i++) //начинаем отсчет c 1; если значение переменной $i достигнет максимального значения $cnt(в данном случае это 636), то остановим выполнение цикла; цикл выполняем некое кол-во раз($i++) ЗДЕСЬ НЕ ПОНЯТНО ОДНО: если я  $i присвою 0, то скрипт выведет тот же результат, что и при $i = 1. Тогда почему 1, а не 0?
  9.      {
  10.        if ($arr[$i] > $max) //ТЕЛО ЦИКЛА ВООБЩЕ ПОНЯТЬ НЕ МОГУ. Я вижу такую логику: если любой индекс массива будет больше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
  11.          {
  12.           $index_max = $i; //то дальше вообще тёмный лес для меня
  13.           $max = $arr[$i];
  14.          }
  15.        
  16.         else //иначе
  17.         if ($arr[$i] < $max) //если любой индекс массива будет меньше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
  18.  
  19.          {
  20.            $index_min = $i; //то дальше опять тёмный лес
  21.            $min = $arr[$i];
  22.          }
  23.      }
  24.  
  25. echo "Максимальное число \$arr[$index_max] = $max<br>";
  26. echo "Минимальное число \$arr[$index_min] = $min<br>";
  27. ?>
  28.  



И наконец. У меня результат такой получается
Максимальное число $arr[1] = 636
Минимальное число $arr[5] = 67


В массиве у меня минимальное число "3", а скрипт выводит 67.
2. LIME - 04 Октября, 2011 - 07:55:15 - перейти к сообщению
MaxRAF дополнил коменты
Спойлер (Отобразить)
3. MaxRAF - 04 Октября, 2011 - 08:38:20 - перейти к сообщению
LIME стало более понятно. Спасибо за помощь.

 

Powered by ExBB FM 1.0 RC1