2011-04-07 1 views
0

시나리오 : 저는 nusoap.php를 사용하고 있으며 Microsoft 웹 서비스에 연결하고 있습니다. 결과를 배열로 반환합니다. 그리고 그것은 작동합니다.PHP 변수/배열 (nusoap)을 사용하여 값을 검색하는 방법

문제점 : 어레이 인 nusoap에서 리턴되는 DeviceId 값을 검색하는 방법은 무엇입니까? (왜냐하면이 배열을 행 단위로 반복하고 DeviceId의 값을 가져와야하기 때문입니다.) 여기

내 코드입니다 : 여기

<?php 

require_once('nusoap.php'); 

$client = new nusoap_client('http://xxx.xxx.xx.xxx:8060/iapps/Service1.asmx?WSDL', true); 

$param = array('sql' =>'exec DeviceGet 1 ','p2' => ''); 
$result = $client->call('GetData',$param , 'Service'); 

echo print_r($result,true); 

echo '<h2>Response</h2><pre>' . htmlspecialchars($client->response, ENT_QUOTES) . '</pre>'; 
?> 

(I 배열과 XML의 전체 값을 출력)있어 결과 :

Array ([GetDataResult] => Array ([schema] => Array ([element] => Array ([complexType] => Array ([choice] => Array ([element] => Array ([complexType] => Array ([sequence] => Array ([element] => Array ([!name] => DeviceId [!minOccurs] => 0))) [!name] => Table1) [!minOccurs] => 0 [!maxOccurs] => unbounded)) [!name] => NewDataSet [!msdata:IsDataSet] => true [!msdata:UseCurrentLocale] => true) [!id] => NewDataSet) [diffgram] => Array ([NewDataSet] => Array ([Table1] => Array ([0] => Array ([DeviceId] => 00000000-0000-1000-8000-000C29BB0EEA [!diffgr:id] => Table11 [!msdata:rowOrder] => 0) [1] => Array ([DeviceId] => 2f73ba3b80df3636c14e1bafa3818f06d42ebe4d [!diffgr:id] => Table12 [!msdata:rowOrder] => 1) [2] => Array ([DeviceId] => 448252633b4dde13c4cf0431d4055d69ffc70723 [!diffgr:id] => Table13 [!msdata:rowOrder] => 2) [3] => Array ([DeviceId] => 731a2f59b54d38df202315cd3853e3272757febd [!diffgr:id] => Table14 [!msdata:rowOrder] => 3) [4] => Array ([DeviceId] => f855ded29053b276cd99452a454477e5a2d27787 [!diffgr:id] => Table15 [!msdata:rowOrder] => 4)))))) 

Response 
HTTP/1.1 200 OK 
Cache-Control: private, max-age=0 
Content-Type: text/xml; charset=utf-8 
Server: Microsoft-IIS/7.0 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 
Date: Thu, 07 Apr 2011 21:18:12 GMT 
Connection: close 
Content-Length: 1598 

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetDataResponse xmlns="http://tempuri.org/"><GetDataResult><xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table1"><xs:complexType><xs:sequence><xs:element name="DeviceId" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema><diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><Table1 diffgr:id="Table11" msdata:rowOrder="0"><DeviceId>00000000-0000-1000-8000-000C29BB0EEA</DeviceId></Table1><Table1 diffgr:id="Table12" msdata:rowOrder="1"><DeviceId>2f73ba3b80df3636c14e1bafa3818f06d42ebe4d</DeviceId></Table1><Table1 diffgr:id="Table13" msdata:rowOrder="2"><DeviceId>448252633b4dde13c4cf0431d4055d69ffc70723</DeviceId></Table1><Table1 diffgr:id="Table14" msdata:rowOrder="3"><DeviceId>731a2f59b54d38df202315cd3853e3272757febd</DeviceId></Table1><Table1 diffgr:id="Table15" msdata:rowOrder="4"><DeviceId>f855ded29053b276cd99452a454477e5a2d27787</DeviceId></Table1></NewDataSet></diffgr:diffgram></GetDataResult></GetDataResponse></soap:Body></soap:Envelope> 
+0

당신의 두뇌를 저장하십시오 : 사람이 읽을 수있는 편리한 [Array] (http://pastebin.com/raw.php?i=EVK0kUpw) 및 [XML] (http://pastebin.com/raw.php?i=R903M4Sf). – drudge

답변

0
foreach ($result['GetDataResult']['diffgram']['NewDataSet']['Table1'] as $item) { 
    echo $item['DeviceId'] . PHP_EOL; 
} 

출력 :

00000000-0000-1000-8000-000C29BB0EEA 
2f73ba3b80df3636c14e1bafa3818f06d42ebe4d 
448252633b4dde13c4cf0431d4055d69ffc70723 
731a2f59b54d38df202315cd3853e3272757febd 
f855ded29053b276cd99452a454477e5a2d27787 
+0

PeterSmith 안녕하세요. 고마워요! – Cris