2012-08-27 9 views
-1

喜的價值觀,我得到這個功能:如何訪問序列化多維數組

public static function consumeMessage($xml, $debug = 1) { 
    $xml = stripslashes(urldecode($xml)); 
    $rq = OpenPayU::parseOpenPayUDocument($xml);  

    $msg = $rq['OpenPayU']['OrderDomainRequest']; 

    switch (key($msg)) { 
     case 'OrderNotifyRequest': 
      return OpenPayU_Order::consumeNotification($xml); 
      break; 
     case 'ShippingCostRetrieveRequest': 
      return OpenPayU_Order::consumeShippingCostRetrieveRequest($xml); 
      break; 
     default: 
      return key($smg); 
      break; 
    } 
} 

我打電話是這樣的:

$result = OpenPayU_Order::retrieve($result->sessionId); 

譜寫這種方式提交:

write_to_file("debug.txt", "order details: \n\n " . 
serialize($result->response) . "\n\n"); 

在輸出我:

a:1:{s:8:「OpenPayU」; a:2:{s:14:「HeaderResponse」; a:3:{s:10:「SenderName」; s:8:「checkout」; s :7: 「版本」; S:3: 「1.0」; S:9: 「算法」; S:3: 「MD5」;} S:19: 「OrderDomainResponse」;一個:1:{S:21:」 OrderRetrieveResponse 「;一個:8:{S:5:」 殘油 「; S:32:」 28444ffd9de5489e08a32e6cd51274a5 「; S:6:」 狀態 「;一個:1:{S:10:」 的StatusCode 「; S:16:」 OPENPAYU_SUCCESS 「;} S:13:」 MerchantPosId 「; S:5:」 37857 「; S:9:」 的sessionid 「; S:32:」 55a6d45cc0fef40ce95e9c1321b19b13 「; S:14:」 的CustomerRecord「;一個:6:{S :10: 「客戶ID」; S:8: 「nyi3iw6v」; S:5: 「電子郵件」; S:28: 「[email protected]」; S:5: 「電話」; S:15:」 (+48) 786265656「; s:9:」FirstName「; s:5:」mieta「; s:8:」LastName「; s:5:」mieta「; s:8:」Language「; s: 2: 「PL」;} S:11: 「OrderStatus」; S:20: 「ORDER_STATUS_PENDING」; S:12: 「貨幣代碼」; S:3: 「PLN」; S:7: 「PayType」; S:1 :「t」;}}}}

但是我需要幾乎所有的值,f.ex:'StatusCode'並將其保存到數據庫,有沒有什麼方法可以在沒有正則表達式的情況下獲取它?

我試圖得到它像$ result-> response ['statuscode'];但我什麼也沒得到

回答

0

如果你想反序列化從文件中的字符串,做

$array = unserialize(file_get_contents('/path/to/file')); 

這會給你這是在$result->response陣列,您可以訪問像任何其他多維數組,例如

$responseData = $result->response; 
echo $responseData["OpenPayU"]["HeaderResponse"]["SenderName"]; 
… 

如果你不知道如何訪問一個多維數組,please refer to the PHP Manual

+0

我想,但我不能 – ariel

+0

@ariel你必須更具體。問題是什麼? – Gordon

+0

如何獲得f.ex這個值:'StatusCode'是:OPENPAYU_SUCCESS – ariel