2012-07-02 3 views
1

У меня есть запрос SOAP, который возвращает массив идентификаторов. По какой-то причине у меня возникают проблемы с доступом к массиву в элементе SimpleXML.PHP массив доступа в simpleXML

Я сделал vardump объекта SimpleXML:

die(var_dump($POList)); 
object(SimpleXMLElement)#7 (1) { ["int"]=> array(10) { [0]=> string(5) "20622" [1]=> string(5) "20868" [2]=> string(5) "20880" [3]=> string(5) "20883" [4]=> string(5) "21034" [5]=> string(5) "21065" [6]=> string(5) "21136" [7]=> string(5) "21160" [8]=> string(5) "21202" [9]=> string(5) "21247" } } 

, а затем уаг дамп, что я хотя бы массив:

die(var_dump($POList->int)); 
object(SimpleXMLElement)#8 (1) { [0]=> string(5) "20622" } 

Как этот массив?

+0

Если вы делаете запросы Мыльные почему бы вам не использовать встроенный клиент SOAP? Там даже скрипты, которые будут генерировать классы для вас – Cfreak

+0

@Cfreak Потому что SOAP клиент, похоже, не нравится этот .net webservice. Мне удалось получить запрос в soapclient, но единственный способ, которым я мог разобрать ответ, - это захватить XML и поместить его через SimpleXML. – MrGlass

ответ

2

SimpleXMLElement реализует Traversable, так что вы должны быть в состоянии сделать:

foreach($POList->int as $el) 
    echo $el; 

Или, возможно, запросить массив из XPath:

$array = $POList->xpath('/int')[0]; 
foreach($array as $el) 
    echo $el; 
+0

Второй пример не работает, но первый разрешил мне перебирать по и перестроить массив. – MrGlass

+0

Синтаксис в этом втором примере будет работать только в PHP 5.4, так как предыдущие версии отклонят комбинацию синтаксиса функции и массива формы 'foo() [0]'. – IMSoP

Смежные вопросы