我有一个对象数组。
$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编码数据时取回相同的对象数组?
答案 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
)