如何json_decode一个对象数组?

时间:2013-03-12 07:25:24

标签: php arrays json

我有一个对象数组。

$arr = array(0 => o1, 1 => o2);

我为此获得了正确的json_encode。说,我有:

$json_data = json_encode($arr);

但是当我json_decode $json_data变量时, 第二个参数为true我以数组格式得到所有内容:

array(0 => array, 1 =>array)

第二个参数为false我以对象格式获取所有内容:

object(0 => object, 1 => object)

如何获取原始阵列?即如何获得

array(0 => object, 1 => object)

编辑:解释我的问题。当我们json_encode一个对象数组时,如何在json_decode编码数据时取回相同的对象数组?

2 个答案:

答案 0 :(得分:1)

我尝试在PHP 5.6.11-1ubuntu3.1(cli)上使用代码,并且令人惊讶地得到了我想要的内容。由于这个问题已经过时了,所以当我在发布此代码时尝试这个问题时,我不记得PHP版本是什么。

代码:

<?php
class Test {
        public $message = "this is message";
        public $number = 10;
}
$t1 = new Test();
$t2 = new Test();
$arr = array(0 => $t1, 1 => $t2);
$json_data = json_encode($arr);
var_dump($json_data);
$original_array = json_decode($json_data, true);
$original_object = json_decode($json_data, false);
var_dump($original_array);
var_dump($original_object);
?>

我得到的输出是:

string(85) "[{"message":"this is message","number":10},{"message":"this is message","number":10}]"
array(2) {
  [0]=>
  array(2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
  [1]=>
  array(2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
}
array(2) {
  [0]=>
  object(stdClass)#3 (2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
  [1]=>
  object(stdClass)#4 (2) {
    ["message"]=>
    string(15) "this is message"
    ["number"]=>
    int(10)
  }
}

答案 1 :(得分:0)

试试这个:

$arr       = array(0 => "o1", 1 => "o2");

$json_data = json_encode($arr);

$res       = json_decode($json_data, true);

echo "<pre>";
print_r($res);

输出:

Array
(
    [0] => o1
    [1] => o2
)
相关问题