我在编程世界很新。这可能是一个非常愚蠢的问题。但是我需要一个关于这个问题的清晰概念,这就是我问这个问题的原因。为什么这个变量作为一个对象?
<?php
$json = '{"a":1}';
$data = json_decode($json);
echo $data->a;
?>
我学习的时候,我们称之为对象应该是
$data = new json_decode($json);
为什么这个$data
工作作为对象而不new
?
我在编程世界很新。这可能是一个非常愚蠢的问题。但是我需要一个关于这个问题的清晰概念,这就是我问这个问题的原因。为什么这个变量作为一个对象?
<?php
$json = '{"a":1}';
$data = json_decode($json);
echo $data->a;
?>
我学习的时候,我们称之为对象应该是
$data = new json_decode($json);
为什么这个$data
工作作为对象而不new
?
您需要将它存储在一个变量中,以便像数组一样使用。
<?php
$json = '{"a":1}';
$data = json_decode($json,true);
echo $data['a'];
?>
默认情况下json_decode
(没有提供第二个参数)将返回对象,这意味着该函数本身将创建(和返回)为您的新stdClass
。
如果你想数组来代替:
$data = json_decode($json, true);
这是因为您使用的函数返回一个实例。
当您使用新的运算符时,您将从className明确创建一个实例。举例:
function return_instance() {
return new ClassName();
}
$obj1 = return_instance();
$obj2 = new ClassName();
// The two objects return the same type of object
json_decode默认情况下会尝试返回一个对象而不是数组。这样做你不需要json_decode,而只需直接调用该函数。您可以通过添加第二个参数true
来返回数组。
例如:
$asObject = json_decode($jsonText);
$asArray = json_decode($jsonText, true);
的new
关键字主要调用类的构造函数来创建新的对象。如果你喜欢,你可以将json_decode
想象成在函数内部调用new
,以便为你创建一个新对象。
becouse json_deocde返回类型是对象类型的在这里是示例
function jsonDecode($json){
//here logic of decoding;
return new stdClass();
}
现在将对象的类型
即JSON数组,它可以被转换为一个对象或一个关联数组。 如果使用功能
$object = json_decode($array);
目标变量将被视为一个对象。 如果你的意志仅仅是解码的JSON数组关联数组,你必须添加阵列
$assArray= json_decode($array,true);
在这种情况下,后一个真实的,你可以访问该值作为一个普通阵列
echo($assArray["a"]);
将输出1。
不过我建议你检查官方手册,在这些功能
您需要将另一个参数的解释很清楚TRUE;把它作为一个'assoc命令array' –
我的问题是为什么它作为一个对象工作? –
它因为'json_decode' **需要一个JSON编码的字符串并将其转换为一个PHP变量。**。检查[文档](http://php.net/manual/en/function.json-decode.php)以了解'json_decode'的工作方式 –