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 :: Версия для печати :: получение массива с атрибутом Id
Форумы портала PHP.SU » » XML и его обработка » получение массива с атрибутом Id

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

1. myshara - 20 Мая, 2015 - 11:05:01 - перейти к сообщению
Доброго времени суток!

Есть задача.
Получить максимальный Id.

xml:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <structure>
  3. <group id="gp1"><propertis></propertis></group>
  4. <group id="gp2"><propertis></propertis></group>
  5. <group id="gp..."><propertis></propertis></group>
  6. </structure>


Как получить массив id на php
Делаю так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.     $txml = simplexml_load_file('xml/'.$fname);
  2.     $arrayId=array();
  3.     foreach ($txml->group as $group)
  4.     {
  5.         $arrayId[]=$group->attributes('id');
  6.     };


не получается...
2. Panoptik - 20 Мая, 2015 - 11:06:07 - перейти к сообщению
http://phpfaq[dot]ru/debug
3. myshara - 20 Мая, 2015 - 13:27:45 - перейти к сообщению
Panoptik пишет:
http://phpfaq.ru/debug


А?!
Да это же ответ на все вопросы мироздания.

Что же вы такие дебилы наплодили столько форумов и тем.
Все же просто - см. в логи.

А вопрос актуальный 30 мин - 18 просмотров что дальше????

Как решить задачу?? Что не так в коде???
Где ответ???

Вот так всегда...
4. Мелкий - 20 Мая, 2015 - 13:46:27 - перейти к сообщению
myshara пишет:
Что не так в коде???

Так прочтите же статью полностью и спросите у своего же кода, где что-то идёт не так.
То ли в $group, что вы ожидаете? Тот ли $txml?
Что вам возвращает attributes?

А форумы нужны на ответы о неочевидных моментах, например, что для того чтобы получить строки значений, а не коллекцию SimpleXMLElement, последний надо привести к строке стандартным способом.
5. myshara - 20 Мая, 2015 - 13:52:55 - перейти к сообщению
Всем спасибо за участие.

Разобрался сам.

решение:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $arrayId[]=$group['id'];


Цитата:
Горе от ума умников. (Илья Герчиков) ГОРЕ
6. Sail - 20 Мая, 2015 - 14:11:59 - перейти к сообщению
myshara, а теперь - var_dump($arrayId); - и любуемся на массив с неожиданной структурой Радость
Вот так лучше, однако:
PHP:
скопировать код в буфер обмена
  1. //...
  2.     $arrayId=array();
  3.     foreach($txml as $node) {
  4. //    Как ниже напомнили: за ненадобностью...
  5. //        foreach($node->attributes() as $key => $value){
  6. //            if($key === 'id') {
  7. //                $arrayId[] = $value->__toString();
  8. //            }
  9. //        }
  10.         $arrayId[] = (string)$node['id'];
  11.     }
  12.     var_dump($arrayId);

Подробности: Класс SimpleXMLElement
PS: и, конечно-же, не стоит от (любого!) форума ожидать мгновенного (или просто быстрого) ответа на любой вопрос...
(Добавление)
... форум ведь - не техподдержка, за услуги которой вы платите абонентскую плату...
7. Мелкий - 20 Мая, 2015 - 14:17:39 - перейти к сообщению
Sail, сейчас по рукам бить буду! Радость
PHP:
скопировать код в буфер обмена
  1.     $arrayId=array();
  2.     foreach($txml as $node) {
  3.         $arrayId[] = (string) $node['id'];
  4.     }
8. myshara - 22 Мая, 2015 - 11:05:39 - перейти к сообщению
Спасибо всем.

Помогли.

 

Powered by ExBB FM 1.0 RC1