如何从多维json数组中获取值

时间:2015-12-10 22:30:11

标签: php arrays json

我对这个网站来说是全新的,所以如果我的帖子格式不正确,我很抱歉。

无论如何,我有一个相当简单的问题。我从"请求主体" -array-thingy中提取值,并且通过使用这4行代码获得了我需要的大部分内容:

$payment_id = strval($callback_json->id);
$order_id = strval($callback_json->order_id);
$currency = strval($callback_json->currency);
$card_brand = strval($callback_json->metadata->brand);

我现在的问题是,在尝试获得"金额时,我已经耗尽了人才。值似乎是一个"子变量"到"操作"。

我尝试过这样做,但他们都没有工作:

$amount_total = strval($callback_json->operations[amount]);
$amount_total = strval($callback_json->operations->amount);

所以现在我的问题是;如何格式化此行以获得值" 69500"。

我真的希望有人可以帮助我! : - )

{
    "id":9256797,
    "order_id":"23322651466",
    "accepted":true,
    "type":"Payment",
    "text_on_statement":null,
    "branding_id":null,
    "variables":{},
    "currency":"DKK",
    "state":"new",
    "operations":[{
        "id":1,
        "type":"authorize",
        "amount":69500,
        "pending":false,
        "qp_status_code":"20000",
        "qp_status_msg":"Approved",
        "aq_status_code":"20000",
        "aq_status_msg":"Approved",
        "data":{},
        "callback_url":"http://requestb.in/105y8k81",
        "callback_success":null,
        "callback_response_code":null,
        "created_at":"2015-12-05T12:40:40+00:00"
        }],

"metadata":{
    "type":"card",
    "brand":"visa",
    "last4":"0008",
    "exp_month":11,
    "exp_year":2016,
    "country":"DNK",
    "is_3d_secure":false,
    "hash":"6f976a4e388928beb4ad3OrQHCS2LDGNAFZVK3i54p6q8heV0RRci",
    "number":null,
    "customer_ip":"2.110.77.40",
    "customer_country":"DK",
    "fraud_suspected":false,
    "fraud_remarks":[]
}

1 个答案:

答案 0 :(得分:1)

使用

$amount_total = strval($callback_json->operations[0]->amount);

因为json中的[是数组的开放标记。

{'foo':[{'bar':"A"},{'bar':"B"}]}
$val->foo[0]->bar;  # A
$val->foo[1]->bar;  # B

希望有所帮助。