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

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

1. Asttoxa - 09 Января, 2013 - 16:05:47 - перейти к сообщению
Здравствуйте.
Подскажите пожалуйста как работать с таким объектом. Или подскажите пожалуйста где удобоваримо написано.

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

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.
2. Мелкий - 09 Января, 2013 - 16:12:32 - перейти к сообщению
$object->response->sms[0]->value ?
3. Asttoxa - 09 Января, 2013 - 16:17:56 - перейти к сообщению
Мелкий пишет:
$object->response->sms[0]->value ?

Понял спасибо.
А перебрать этот объект foreach можно?
4. Мелкий - 09 Января, 2013 - 16:25:44 - перейти к сообщению
foreach умеет перебирать только массивы и специально для этого сделанные классы. stdClass в их число не входит, так что нет.
Вот элемент sms foreach'ом перебрать как раз очень даже можно, т.к. это - массив.

А это, часом, не JSON? json_decode умеет возвращать массив, вместо объекта, см. второй параметр.
5. Asttoxa - 09 Января, 2013 - 16:34:29 - перейти к сообщению
Мелкий пишет:
foreach умеет перебирать только массивы и специально для этого сделанные классы. stdClass в их число не входит, так что нет.
Вот элемент sms foreach'ом перебрать как раз очень даже можно, т.к. это - массив.

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

Я, к сожалению, пока не знаю что такое JSON. Поэтому пока ответить вам не смогу Недовольство, огорчение
6. DelphinPRO - 09 Января, 2013 - 17:12:49 - перейти к сообщению
Мелкий пишет:
А это, часом, не JSON?
нет Улыбка это print_r()
7. DlTA - 09 Января, 2013 - 19:37:14 - перейти к сообщению
DelphinPRO пишет:
нет это print_r()
было бы смешно, если бы не так глупо.
(Добавление)
Asttoxa пишет:
пока не знаю что такое JSON. Поэтому пока ответить вам не смогу
откуда вы берете этот объект?
8. Asttoxa - 09 Января, 2013 - 21:50:56 - перейти к сообщению
DlTA пишет:
откуда вы берете этот объект?

Ответ сервера. Ответ правда был в XML формате.
9. esterio - 09 Января, 2013 - 21:53:51 - перейти к сообщению
Так обходите xml с помощью simplexml и все будет ок
10. Okula - 09 Января, 2013 - 23:41:24 - перейти к сообщению
esterio, simplexml возвращает объект Улыбка Это порочный круг Улыбка
11. DlTA - 09 Января, 2013 - 23:48:04 - перейти к сообщению
Asttoxa пишет:
XML формате
юзайте simplexml, там как раз каждый узел можно и foreach-ем про оббегать если на на однной ветви несколько одноименных зулов, а если точно знаете что и где искать, так вообще можно выстроить цельную ветвь обращения

а чем это из xml был получен объект класса stdClass?
12. Asttoxa - 10 Января, 2013 - 16:28:43 - перейти к сообщению
DlTA пишет:

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

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

имхо бесполезное, ибо массивом нельзя описать в полной мере элементы xml без костылей
14. Asttoxa - 10 Января, 2013 - 19:25:35 - перейти к сообщению
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 >"
15. esterio - 10 Января, 2013 - 19:37:24 - перейти к сообщению
http://www[dot]ibm[dot]com/developerwork[dot][dot][dot]lexml/index[dot]html
первая ссилка в гугле и все расписано

 

Powered by ExBB FM 1.0 RC1