用对象读json

时间:2013-12-03 02:41:17

标签: php json

我在两个JSON中通过POST解码了传入的字符串,我正在尝试读取它并将密钥保存在变量中。这些是数组:

$infos = $_POST;

$orderInformation['orderInfo'] = json_decode($infos['orderinf']);

$orderItensInformation['orderItensInfo'] = json_decode($infos['orderitensinf']);

这就是var_dump返回的$orderInformation

array(1) {
  ["orderInfo"]=>
    object(stdClass)#1 (9) {
      ["customer_fone"]=>
      string(10) "5554120082"
      ["neighborhood"]=>
      string(4) "aaaa"
      ["order_price"]=>
      int(45)
      ["payment_method"]=>
      string(8) "CASH"
      ["customer_email"]=>
      string(19) "abc@def.com"
      ["street"]=>
      string(14) "Unknown street"
      ["number"]=>
      string(3) "111"
      ["order_date"]=>
      object(stdClass)#2 (5) {
        ["day"]=>
        int(3)
        ["month"]=>
        int(11)
        ["time"]=>
        int(1)
        ["year"]=>
        int(2013)
        ["minute"]=>
        int(24)
      }
      ["customer_name"]=>
      string(6) "Noname"
    }
}

问题是如何获取对象内的信息? 我试图使用foreach:

foreach($orderInformation->orderInfo as $oi) {
      $fone = $oi->customer_fone;
      $nbh = $oi->neighborhood;
       .
       .
       .
}

但没有奏效。变量是空的。

2 个答案:

答案 0 :(得分:0)

除非你在这个数组中有多个订单,否则不需要循环

$orderInformation['orderInfo']是你的对象

echo $orderInformation['orderInfo']->customer_fone;
// Should return 5554120082

对于更简洁的方法,请尝试

$x = $orderInformation['orderInfo'];
echo $x->customer_fone;

代码中的大错误。

$orderInformation->ordeInfo不像您所称的属性那样存在。

$orderInformation['orderInfo']

答案 1 :(得分:0)

From the manual,return将是一个对象,除非你传入它的第二个参数设置为true,这将返回一个关联数组(在这种情况下可能更适合你):

$orderInformation['orderInfo'] = json_decode($infos['orderinf'], true);

$orderItensInformation['orderItensInfo'] = json_decode($infos['orderitensinf'], true);

foreach($orderInformation['orderInfo'] as $oi) {
      $fone = $oi['customer_fone'];
      $nbh = $oi['neighborhood'];
       .
       .
       .
}