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]   

> Описание: max() и min() не помогают :(
Heavenanvil
Отправлено: 30 Марта, 2016 - 15:55:06
Post Id


Частый гость


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


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




Здравствуйте.
Столкнулся с такой проблемой.
Нужно добавить на сайт погоду, пытаюсь парсить xml с яндекса.
PHP:
скопировать код в буфер обмена
  1. $data_file="http://export.yandex.ru/weather-ng/forecasts/29866.xml"; // адрес xml файла
  2. $xml = simplexml_load_file($data_file); // раскладываем xml на массив
В XML файле есть такие значения, как температура на каждый час дня, соответственно, мне нужно найти максимальную и минимальную температуру на первый день. Ищу значения здесь:
PHP:
скопировать код в буфер обмена
  1. $hour0=$xml->day[0]->hour[0]->temperature;
  2. $hour1=$xml->day[0]->hour[1]->temperature;
  3. $hour2=$xml->day[0]->hour[2]->temperature;
  4. ...
  5. $hour23=$xml->day[0]->hour[23]->temperature;
Хоть и и понимаю, что это не правильно, нужно было использовать какой-нибудь цикл, но моих знаний не хватило.
Перейду к сути. Добавляю полученные значения в массив и вывожу, допустим минимальное:
PHP:
скопировать код в буфер обмена
  1. $hour_array = array($hour0, $hour1, $hour2, ... , $hour23);
  2. echo min($hour_array);
Но минимальное значение выдается неправильно, ровно как и максимальное. Минимальная у меня всегда получалась равна "0", а максимальная "4", хотя вижу в массиве, что там есть значения "-1" и "6"
 
 Top
ore
Отправлено: 30 Марта, 2016 - 19:04:12
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Март 2016  


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




Проблема видна, если посмотреть print_r($hour_array) - элементы массива - не числа а объекты. Решение + цикл:

CODE (htmlphp):
скопировать код в буфер обмена
  1. ...
  2. for ($h = 0; $h<24; $h++) {
  3.         $hour_array[$h] = (int) $xml->day[0]->hour[$h]->temperature;
  4. }
  5.  
  6. echo min($hour_array);
  7. echo max($hour_array);
 
 Top
Heavenanvil
Отправлено: 31 Марта, 2016 - 03:03:17
Post Id


Частый гость


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


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




ore, огромное спасибо. Всё работает.
У меня была мысль, что значения массива нужно перевести в числа, но копал не в той стороне и потерял пол дня на это. Благодарю.
 
 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