2012-08-27 62 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