Доступ к числовому свойству в элементе SimpleXMLElement

Я пытаюсь получить доступ к номеру в элементе ниже, но у меня возникли проблемы с получением этого значения.

echo $object->0; //returns Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$' SimpleXMLElement Object ( [0:public] => 15810 ) 

Любые идеи о том, как я могу получить эту ценность?

Обновить

Я понимаю, что это странная ошибка … Я использую API ebay для получения этого значения. Даже когда я это делаю:

  $zero = 0; $print_r($ruleXml->HourlyUsage->$zero); 

Он по-прежнему показывает то же самое

 SimpleXMLElement Object ( [0:public] => 15810 ) 

Я попробовал {0}

Вот результат того, с чем я работаю.

 [1] => SimpleXMLElement Object ( [CallName:public] => AddItem [CountsTowardAggregate:public] => false [DailyHardLimit:public] => 100000 [DailySoftLimit:public] => 100000 [DailyUsage:public] => 0 [HourlyHardLimit:public] => 100000 [HourlySoftLimit:public] => 100000 [HourlyUsage:public] => 0 [Period:public] => -1 [PeriodicHardLimit:public] => 0 [PeriodicSoftLimit:public] => 0 [PeriodicUsage:public] => 0 [ModTime:public] => 2010-05-04T18:06:08.000Z [RuleCurrentStatus:public] => NotSet [RuleStatus:public] => RuleOn ) 

Итак, вот что …

 number_format($ruleXml->HourlyUsage) //throws the error: number_format() expects parameter 1 to be double, object given $ruleXml->HourlyUsage //shows the value on the page 

 $x = 0; echo $object->$x; 

или

 echo $object->{0}; 

Причина в том, что '0' не является допустимым идентификатором в PHP. Поэтому, когда вы вводите «0», все, что он видит, это T_LNUMBER. Все имена следуют за соглашением о присвоении имен. Единственное отклонение состоит в том, что переменной-члену, которой предшествует a->, не нужен префикс $. http://www.php.net/manual/en/language.variables.basics.php

{0} работает, потому что {} указывает, что идентификатор является результатом простого выражения внутри. Таким образом, {$ x} в этом случае совпадает с $ x, но {0} не совпадает с '0', так как они приводят к различным токенам анализатора.

Я не знаю, что такое бизнес с узлами с именем «0», но ошибка, которую вы видите, состоит в том, что SimpleXML всегда возвращает объекты. Если вам нужно использовать результат как число, примените его к соответствующему типу, например

 number_format((int) $ruleXml->HourlyUsage) 

Элементы XML не могут начинаться с цифры . Даже если вы можете каким-то образом создать такие элементы, SimpleXML (и, скорее всего, большинство парсеров) не сможет прочитать результирующий документ.

 <!-- legal --> <a0>foo</a0> <!-- not legal -- note how even Stack Overflow's highlighter chokes on it --> <0>foo</0> 

Вы можете использовать __toString() для получения строкового значения дочернего объекта, поэтому он будет похож на $object->__toString();