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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Asttoxa
Отправлено: 09 Января, 2013 - 16:05:47
Post Id


Новичок


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


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




Здравствуйте.
Подскажите пожалуйста как работать с таким объектом. Или подскажите пожалуйста где удобоваримо написано.

например есть вот такой объект:

stdClass Object
(
[response] => stdClass Object
(
[money] => 46.8
[sms] => Array
(
[0] => stdClass Object
(
[value] => 78
[area] => Россия
)

[1] => stdClass Object
(
[value] => 78
[area] => Украина
)

)

)

)

Мне нужно вычленить и работать с данными.
Если я делаю (array)$object то он конвертит только верхний уровень. Может можно обратиться к элементу объекта как к элементу массива например array['element'] или перебрать тем же foreach?

Спасибо.

PS Прошу сильно не ругайтесь, если что-то не понравилось в моем сообщении я только начал изучать php.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Января, 2013 - 16:12:32
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




$object->response->sms[0]->value ?


-----
PostgreSQL DBA
 
 Top
Asttoxa
Отправлено: 09 Января, 2013 - 16:17:56
Post Id


Новичок


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


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




Мелкий пишет:
$object->response->sms[0]->value ?

Понял спасибо.
А перебрать этот объект foreach можно?
 
 Top
Мелкий Супермодератор
Отправлено: 09 Января, 2013 - 16:25:44
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




foreach умеет перебирать только массивы и специально для этого сделанные классы. stdClass в их число не входит, так что нет.
Вот элемент sms foreach'ом перебрать как раз очень даже можно, т.к. это - массив.

А это, часом, не JSON? json_decode умеет возвращать массив, вместо объекта, см. второй параметр.


-----
PostgreSQL DBA
 
 Top
Asttoxa
Отправлено: 09 Января, 2013 - 16:34:29
Post Id


Новичок


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


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




Мелкий пишет:
foreach умеет перебирать только массивы и специально для этого сделанные классы. stdClass в их число не входит, так что нет.
Вот элемент sms foreach'ом перебрать как раз очень даже можно, т.к. это - массив.

А это, часом, не JSON? json_decode умеет возвращать массив, вместо объекта, см. второй параметр.

Я, к сожалению, пока не знаю что такое JSON. Поэтому пока ответить вам не смогу Недовольство, огорчение
 
 Top
DelphinPRO
Отправлено: 09 Января, 2013 - 17:12:49
Post Id



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


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


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




Мелкий пишет:
А это, часом, не JSON?
нет Улыбка это print_r()


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DlTA
Отправлено: 09 Января, 2013 - 19:37:14
Post Id



Постоянный участник


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


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




DelphinPRO пишет:
нет это print_r()
было бы смешно, если бы не так глупо.
(Добавление)
Asttoxa пишет:
пока не знаю что такое JSON. Поэтому пока ответить вам не смогу
откуда вы берете этот объект?
 
 Top
Asttoxa
Отправлено: 09 Января, 2013 - 21:50:56
Post Id


Новичок


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


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




DlTA пишет:
откуда вы берете этот объект?

Ответ сервера. Ответ правда был в XML формате.
 
 Top
esterio
Отправлено: 09 Января, 2013 - 21:53:51
Post Id



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


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


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




Так обходите xml с помощью simplexml и все будет ок
 
 Top
Okula
Отправлено: 09 Января, 2013 - 23:41:24
Post Id



Участник


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


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




esterio, simplexml возвращает объект Улыбка Это порочный круг Улыбка
 
 Top
DlTA
Отправлено: 09 Января, 2013 - 23:48:04
Post Id



Постоянный участник


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


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




Asttoxa пишет:
XML формате
юзайте simplexml, там как раз каждый узел можно и foreach-ем про оббегать если на на однной ветви несколько одноименных зулов, а если точно знаете что и где искать, так вообще можно выстроить цельную ветвь обращения

а чем это из xml был получен объект класса stdClass?
 
 Top
Asttoxa
Отправлено: 10 Января, 2013 - 16:28:43
Post Id


Новичок


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


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




DlTA пишет:

а чем это из xml был получен объект класса stdClass?

Я так понимаю вот этой функцией забивается в объект simpleXMLToArray( $xml )
внутри этой функции создается вот так $result = (object)null; и в нее набивается результаты. Вроде если я все правильно понимаю.
 
 Top
DlTA
Отправлено: 10 Января, 2013 - 18:18:35
Post Id



Постоянный участник


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


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




Asttoxa пишет:
simpleXMLToArray
нет такого метода в стандартном наборе пыхи

имхо бесполезное, ибо массивом нельзя описать в полной мере элементы xml без костылей
 
 Top
Asttoxa
Отправлено: 10 Января, 2013 - 19:25:35
Post Id


Новичок


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


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




DlTA пишет:
Asttoxa пишет:
simpleXMLToArray
нет такого метода в стандартном наборе пыхи

имхо бесполезное, ибо массивом нельзя описать в полной мере элементы xml без костылей


А эта функция что делает? SimpleXMLElement

Вернее правильно вот так вроде new SimpleXMLElement($str)
-------------
А понял... создает объект object(SimpleXMLElement) тоесть, как я понимаю, загоняет строковое значение XML в объект.

Чет я совсем запутался.
Подскажите что нужно сделать с XML ответом сервака? Как его правильно обработать? куда лучше загнать?
Вот что я имею: Запрос делаю CURL, а выходит ответ строкой (string) вот примерно такого вида: "<?xml version="1.0" encoding="utf-8"?> <first value="123"> ok </first >"

(Отредактировано автором: 10 Января, 2013 - 20:54:38)

 
 Top
esterio
Отправлено: 10 Января, 2013 - 19:37:24
Post Id



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


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


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




http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]lexml/index[dot]html
первая ссилка в гугле и все расписано
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB