2015-11-10 3 views
0

У меня сложный массив, который преобразуется из SOAP XML. Я хотел бы перебрать массив и получить часть и отображение ENV:BODY. Есть ли способ сделать это ? Тем не менее, я пытаюсь сделать так, что это немного сложно, поскольку имя индекса отличается? Кто-нибудь предложил бы? спасибоPHP цикл через настраиваемый массив

Вот результат моего массива

array (
    'SOAPENV:ENVELOPE' => 
    array (
    'ENV:HEADER' => 
    array (
     'WSA:MESSAGEID' => 'urn:960ddd8d-87f0-11e5-a38e-00144ff9d767', 
     'WSA:REPLYTO' => 
     array (
     'WSA:ADDRESS' => 'http://www.w3.org/2005/08/addressing/anonymous', 
     'WSA:REFERENCEPARAMETERS' => 
     array (
      'INSTRA:TRACKING.ECID' => '52943d5a-ac40-4599-a378-d7c645ea11ca-000ab3ff', 
      'INSTRA:TRACKING.FLOWEVENTID' => '86675', 
      'INSTRA:TRACKING.FLOWID' => '71161', 
      'INSTRA:TRACKING.CORRELATIONFLOWID' => '0000L3nGuO6Fc5GLQyDCid1MBVWK0001VH', 
     ), 
    ), 
     'WSA:FAULTTO' => 
     array (
     'WSA:ADDRESS' => 'http://www.w3.org/2005/08/addressing/anonymous', 
    ), 
    ), 
    'ENV:BODY' => 
    array (
     'NS2:HELLOWORLDRESPONSE' => 
     array (
     'NS2:GREETING' => 'binnenbus Hallo SOA Qing ', 
    ), 
    ), 
), 
) 

Он был создан с помощью:

printf("<pre> RESULT: %s</pre>\n",var_export($res,1)); 
+0

Я хотел бы предложить, чтобы сделать это в то время как у вас есть XML с SimpleXML или подобную библиотеку. – Stepashka

ответ

1

Нет цикл не нужен здесь. Просто используйте клавиши.

echo $res['SOAPENV:ENVELOPE']['ENV:BODY']['NS2:HELLOWORLDRESPONSE']['NS2:GREETING'];

Если вы имеете в виду, что ключи в ENV: изменение тела, вы можете цикл через них, как это:

foreach ($res['SOAPENV:ENVELOPE']['ENV:BODY'] as $body_node) 
{ 
    foreach ($body_node as $value) 
    { 
     echo $value; 
    } 
} 
+0

Удивительный, он работает. спасибо Rjdown. – QLiu

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