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 :: simple_xml не выводит массив на экран

 PHP.SU

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


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

> Описание: 0.о
NeuroZ
Отправлено: 25 Августа, 2014 - 08:59:38
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




Добрый день!
Столкнулся с новой (непонятной) проблемой.
Получаю объект из xml файла (http://weather.yandex.ru/static/cities.xml). Вывожу его на экран:
PHP:
скопировать код в буфер обмена
  1. SimpleXMLElement Object
  2. (
  3.     [@attributes] => Array
  4.         (
  5.             [name] => Австралия
  6.         )
  7.  
  8.     [city] => Array
  9.         (
  10.             [0] => Перт
  11.             [1] => Ньюкасл
  12.             [2] => Дарвин
  13.             [3] => Мельбурн
  14.             [4] => Канберра
  15.             [5] => Кэрнс
  16.             [6] => Сидней
  17.             [7] => Брисбен
  18.             [8] => Аделаида
  19.             [9] => Алис-Спрингс
  20.             [10] => Таунсвилл
  21.             [11] => Хобарт
  22.         )
  23.  
  24. )

К примеру это я вывел одну итерацию элемента $val. Теперь если я напишу print_r ($val->city); я вместо массива с городами получу такой объект:
PHP:
скопировать код в буфер обмена
  1. SimpleXMLElement Object
  2. (
  3.     [@attributes] => Array
  4.         (
  5.             [id] => 94610
  6.             [region] => 21770
  7.             [head] => 0
  8.             [type] => 4
  9.             [country] => Австралия
  10.             [part] =>
  11.             [resort] => 0
  12.             [climate] =>
  13.         )
  14.  
  15.     [0] => Перт
  16. )


Почему так? И как мне получить массив с городами?

(Отредактировано автором: 25 Августа, 2014 - 10:31:57)

 
 Top
esterio
Отправлено: 25 Августа, 2014 - 10:59:12
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




 
 Top
NeuroZ
Отправлено: 25 Августа, 2014 - 11:47:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


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




esterio пишет:
так и должно быть
http://stackoverflow[dot]com/questio[dot][dot][dot]e-from-simplexml

Ага, только странно получается...
PHP:
скопировать код в буфер обмена
  1. foreach ($xml->country as $key => $val) {
  2.             foreach ($val->city as $key1 => $val1) {
  3.                 if ($city == $val1) $cityId = $val1['id'];
  4.             }
  5.         }

такой код работает корректно (т.е. при пробеге по $val->city наш код видит все города).

А вот если вывести массив
PHP:
скопировать код в буфер обмена
  1. foreach ($xml->country as $key => $val) {
  2.             print_r ($val->city);
  3.             foreach ($val->city as $key1 => $val1) {
  4.                 if ($city == $val1) $cityId = $val1['id'];
  5.             }
  6.         }

то на экране этих городов я не увижу...
 
 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