donglu1973 2015-12-10 22:30 采纳率: 100%
浏览 182
已采纳

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

i'm entirely new to this site, so i'm sorry in advance if my post is not formatted properly.

Anyway, i have what i expect to be a fairly simple question. I'm extracting values from a "request body"-array-thingy, and i got most of what i need by using these 4 lines of code:

$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);

My problem now is that i've run out talent when trying to get the "amount" value that seems to be a "sub-variable" to "operations".

I've tried doing it like this, but neither of them work:

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

So my question now is; How do i format this line to get the value "69500".

I really hope someone out there can help me! :-)

{
    "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条回答 默认 最新

  • dongnuo6310 2015-12-10 22:40
    关注

    use

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

    because [ in json is an open tag for an array.

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

    Hope that helps.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Stata 面板数据模型选择
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用