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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не совсем понимаю работу циклов (на примере)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
MaxRAF
Отправлено: 04 Октября, 2011 - 07:05:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2011  


Помог: 1 раз(а)




Пробовал разобрать цикл на примере 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.
 
 Top
LIME
Отправлено: 04 Октября, 2011 - 07:55:15
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




MaxRAF дополнил коменты
Спойлер (Отобразить)

(Отредактировано автором: 04 Октября, 2011 - 08:23:09)

 
 Top
MaxRAF
Отправлено: 04 Октября, 2011 - 08:38:20
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Окт. 2011  


Помог: 1 раз(а)




LIME стало более понятно. Спасибо за помощь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB