[英]formatting a Complex PHP Array returned by SOAP Call
我正在使用webserivce使用nusoap來構建我的方法調用,我的問題是返回的數組以及如何以可用的方式格式化它,我工作的其他項目返回更簡單的結構化xml文件,我可以使用$ xml = simplexml_load_string($ xmlfile); 構建和排序我的數組,
這是nusoap電話
$PickUpDateTime='2011-03-17T09:00:00';
$ReturnDateTime='2011-03-21T09:00:00';
require_once('nusoap/lib/nusoap.php');
$wsdl="Srvc.asmx?WSDL";
$client = new nusoap_client($wsdl, 'wsdl');
$param = array('OTA_VehAvailRateRQ' =>
array('VehAvailRQCore' =>
array('VehRentalCore' =>
array('PickUpDateTime'=>$PickUpDateTime,
'ReturnDateTime'=>$ReturnDateTime,
'PickUpLocation' => array('LocationCode' =>$location),
'ReturnLocation' => array('LocationCode' =>$location)
)//PickUpDateTime, ReturnDateTime, PickUpLocation, ReturnLocation
)//VehRentalCore
)//VehAvailRQCore
); //OTA_VehAvailRateRQ
// LOAD OUR VARIABLE WITH THE RETURN ARRAY
$res = $client->call('GetVehAvailRate', $param);
通常在這一點上我會使用simplexml_load_string(); 但是這個dosnt似乎可以使用這個調用,執行轉儲$ res產生..(由於發布限制而丟失了大量數據......但是一旦數組到達Vehicle,那里就會有更多數組。 。
Array
(
[Success] =>
[VehAvailRSCore] => Array
(
[VehRentalCore] => Array
(
[PickUpLocation] => Array
(
[!LocationCode] => LOCATIONNAME
)
[ReturnLocation] => Array
(
[!LocationCode] => LOCATIONNAME
)
[!PickUpDateTime] => 2011-03-23T09:00:00
[!ReturnDateTime] => 2011-03-31T09:00:00
)
[VehVendorAvails] => Array
(
[VehVendorAvail] => Array
(
[Vendor] => Array
(
[!Code] => AD
)
[VehAvails] => Array
(
[VehAvail] => Array
(
[0] => Array
(
[VehAvailCore] => Array
(
[Vehicle] => Array ()
)
)
[1] => Array
(
[VehAvailCore] => Array
(
[Vehicle] => Array ()
)
)
[2] => Array
(
[VehAvailCore] => Array
(
[Vehicle] => Array()
)
)
[3] => Array
(
[VehAvailCore] => Array
(
[Vehicle] => Array()
)
)
)
[Info] => Array
(
[LocationDetails] =>
)
)
)
)
[!EchoToken] => xxxxxxxx
[!TimeStamp] => 2011-03-18T11:35:19.165125-04:00
[!Target] => xxxxx
[!Version] => xxxxxx
[!TransactionIdentifier] => xxx
)
當試圖使用foreach循環遍歷多陣列時,證明比最初想象的要困難得多......
現在當我試圖使用foreach循環訪問每個元素時,我不得不使用文字調用,即:$ res ['VehAvailRSCore']; 還有那些感嘆號之前沒有遇到過:ie!LocationCode,normaly這只是$ res-> LocationCode
所以我的問題是這個......我怎樣才能利用這個數組呢? 只是這樣我可以調用每個數組元素,並可能將這些/這些值添加到另一個數組,這樣我可以更好地格式化我的頁面?
謝謝
Dude,nusoap死了。 不要使用它。 請改用PHP的內置SOAP類。
訪問數組值必須完成
$a['key1']['subkey']['subsubkey']['subsubkey']
只是想發布哪些代碼對我有用..我已經改變了對nusoap類的調用,並將其替換為PHP SoapClass
$wsdl="..Srvc.asmx?WSDL";
$client = new SoapClient($wsdl);
$param = array('OTA_VehAvailRateRQ' =>
array('VehAvailRQCore' =>
array('VehRentalCore' =>
array('PickUpDateTime'=>$PickUpDateTime,
'ReturnDateTime'=>$ReturnDateTime,
'PickUpLocation' => array('LocationCode' =>$location),
'ReturnLocation' => array('LocationCode' =>$location)
)
)//VehRentalCore
)//VehAvailRQCore
); //OTA_VehAvailRateRQ
$res = $client->__soapCall('GetVehAvailRate', $param);
返回現在是一個對象,它不會顯示那些可怕的感嘆號,以訪問每個值,我使用非文字方式,
foreach($res->subkey->subsubkey->subsubsubkey->subsubsubsubkey as $result) {
echo "<div style='padding:10px; border:1px solid #ccc;'>";
foreach($result as $value){
$string = $value->subkey->subsubkey->subsubsubkey;
echo "<pre>";
print_r($value);
echo "</pre>";
}
echo "</div>";
}
希望其他人可以使用它...感謝您的幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.