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 :: Не совсем понимаю работу циклов (на примере)
$arr=array(25, 636, 298, 3, 495, 67);//придумываем шесть чисел
$cnt=count($arr);//присваиваем эти числа переменной $cnt
$min=$max=$arr[0];//ЗДЕСЬ НЕ ПОНЯТНА ЛОГИКА. Я это понимаю так: переменным $min и $max присваивается нулевой индекс массива, в данном случае 25. А ЗАЧЕМ ПРИСВАИВАТЬ ЕГО НЕ ПОНЯТНО.
$index_min=$index_max=0;//ЗДЕСЬ ТОЖЕ НЕ ПОНЯТНА ЛОГИКА. Я понимаю так: переменным $index_min и $index_max присваивается значение 0. ОПЯТЬ Ж НЕПОНЯТНО ЗАЧЕМ.
for($i=1;$i<$cnt;$i++)//начинаем отсчет c 1; если значение переменной $i достигнет максимального значения $cnt(в данном случае это 636), то остановим выполнение цикла; цикл выполняем некое кол-во раз($i++) ЗДЕСЬ НЕ ПОНЯТНО ОДНО: если я $i присвою 0, то скрипт выведет тот же результат, что и при $i = 1. Тогда почему 1, а не 0?
{
if($arr[$i]>$max)//ТЕЛО ЦИКЛА ВООБЩЕ ПОНЯТЬ НЕ МОГУ. Я вижу такую логику: если любой индекс массива будет больше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
{
$index_max=$i;//то дальше вообще тёмный лес для меня
$max=$arr[$i];
}
else//иначе
if($arr[$i]<$max)//если любой индекс массива будет меньше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
{
$index_min=$i;//то дальше опять тёмный лес
$min=$arr[$i];
}
}
echo"Максимальное число \$arr[$index_max] = $max<br>";
echo"Минимальное число \$arr[$index_min] = $min<br>";
?>
И наконец. У меня результат такой получается
Максимальное число $arr[1] = 636
Минимальное число $arr[5] = 67
В массиве у меня минимальное число "3", а скрипт выводит 67.
LIME
Отправлено: 04 Октября, 2011 - 07:55:15
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
$cnt=count($arr);//присваиваем эти числа переменной $cnt (это длинна массива тоесть кол-во элементов в нем)
$min=$max=$arr[0];//ЗДЕСЬ НЕ ПОНЯТНА ЛОГИКА. Я это понимаю так: переменным $min и $max присваивается нулевой индекс массива, в данном случае 25. А ЗАЧЕМ ПРИСВАИВАТЬ ЕГО НЕ ПОНЯТНО.
//чтоб выставить начальные значения...ведь возможно в дальнейшем они не изменятся...если например все элементы массива равны
$index_min=$index_max=0;//ЗДЕСЬ ТОЖЕ НЕ ПОНЯТНА ЛОГИКА. Я понимаю так: переменным $index_min и $index_max присваивается значение 0. ОПЯТЬ Ж НЕПОНЯТНО ЗАЧЕМ.
//здесь индексы выставляем начальные (выше были значения)
for($i=1;$i<$cnt;$i++)//начинаем отсчет c 1(с 0 нет смысла мы уже присвоили все значения по первому элементу); если значение переменной $i достигнет максимального значения $cnt(в данном случае это 636)(нет ...это 6 - длина массива), то остановим выполнение цикла; цикл выполняем некое кол-во раз($i++) ЗДЕСЬ НЕ ПОНЯТНО ОДНО: если я $i присвою 0, то скрипт выведет тот же результат, что и при $i = 1. Тогда почему 1, а не 0?
{
if($arr[$i]>$max)//ТЕЛО ЦИКЛА ВООБЩЕ ПОНЯТЬ НЕ МОГУ. Я вижу такую логику: если любой индекс массива будет больше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
//здесь "если очередной элемент больше ПЕРЕМЕННОЙ $max"
{
$index_max=$i;//то дальше вообще тёмный лес для меня(то переменная в которой хранится индекс максимального элемента становится текущим индексом $i)
$max=$arr[$i];//и максимальное значение становится значением текущего элемента
}
else//иначе
if($arr[$i]<$max)// тут просто ошибка ...надо $arr[$i] < $min
//если любой индекс массива будет меньше 25-ти(ведь в $min = $max = $arr[0]; указан нулевой индекс, а он у меня с значением 25 )
{
$index_min=$i;//то дальше опять тёмный лес
$min=$arr[$i];
}
}
echo"Максимальное число \$arr[$index_max] = $max<br>";
echo"Минимальное число \$arr[$index_min] = $min<br>";
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.