-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";a:1:{s:21:"OrderRetrieveResponse" ;a:8:{s:5:"ResId";s:32:"28444ffd9de5489e08a32e6cd51274a5";s:6:"ステータス";a:1:{s:10:"ステータスコード";s:16:"OPENPAYU_SUCCESS" ;}s:13:"MerchantPosId";s:5:"37857";s:9:"SessionId";s:32:"55a6d45cc0fef40ce95e9c1321b19b13";s:14:"CustomerRecord";a:6:{s:10 :"CustomerId";s:8:"nyi3iw6v";s:5:"電子メール";s:28:"netprofile@netprofile.com.pl";s:5:"電話";s:15:"(+ 48) 786265656";s:9:"名";s:5:"ミエタ";s:8:"LastName";s:5:"mieta";s:8:"Language";s:2:"pl";}s:11:"OrderStatus";s:20:"ORDER_STATUS_PENDING";s:12 :"CurrencyCode";s:3:"PLN";s:7:"PayType";s:1:"t";}}}}

しかし、私はほとんどすべての値を分離する必要があります.f.ex: 'StatusCode' を取得してデータベースに保存します.正規表現なしで取得する方法はありますか?

$result->response['statuscode']; のように取得しようとしています。しかし、私は何も得ません

4

1 に答える 1

0

ファイルから文字列をアンシリアライズしたい場合は、

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

これにより、 にあった配列が得られ$result->response、他の多次元配列と同じようにアクセスできます。

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

多次元配列へのアクセス方法がわからない場合は、PHP マニュアル を参照してください

于 2012-08-27T16:29:12.277 に答える