簡體   English   中英

格式化SOAP調用返回的復雜PHP數組

[英]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']
  • PHP本身除此之外沒有辦法。

只是想發布哪些代碼對我有用..我已經改變了對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM