2015-10-20 71 views
0

我在编程世界很新。这可能是一个非常愚蠢的问题。但是我需要一个关于这个问题的清晰概念,这就是我问这个问题的原因。为什么这个变量作为一个对象?

<?php 
    $json = '{"a":1}'; 
    $data = json_decode($json); 
    echo $data->a; 
?> 

我学习的时候,我们称之为对象应该是

$data = new json_decode($json); 

为什么这个$data工作作为对象而不new

+3

您需要将另一个参数的解释很清楚TRUE;把它作为一个'assoc命令array' –

+0

我的问题是为什么它作为一个对象工作? –

+2

它因为'json_decode' **需要一个JSON编码的字符串并将其转换为一个PHP变量。**。检查[文档](http://php.net/manual/en/function.json-decode.php)以了解'json_decode'的工作方式 –

回答

0

您需要将它存储在一个变量中,以便像数组一样使用。

<?php 
    $json = '{"a":1}'; 
    $data = json_decode($json,true); 
    echo $data['a']; 
?> 
0

默认情况下json_decode(没有提供第二个参数)将返回对象,这意味着该函数本身将创建(和返回)为您的新stdClass

如果你想数组来代替:

$data = json_decode($json, true); 
0

这是因为您使用的函数返回一个实例。

当您使用新的运算符时,您将从className明确创建一个实例。举例:

function return_instance() { 
    return new ClassName(); 
} 
$obj1 = return_instance(); 
$obj2 = new ClassName(); 
// The two objects return the same type of object 
+0

'json_decode()'默认返回一个对象.. – Darren

+0

是的。这是他的目标。你需要将JSON转换为对象(或者根据文档http://php.net/manual/fr/function.json-decode.php) – jedema

0

json_decode默认情况下会尝试返回一个对象而不是数组。这样做你不需要json_decode,而只需直接调用该函数。您可以通过添加第二个参数true来返回数组。

例如:

$asObject = json_decode($jsonText); 
$asArray = json_decode($jsonText, true); 

new关键字主要调用类的构造函数来创建新的对象。如果你喜欢,你可以将json_decode想象成在函数内部调用new,以便为你创建一个新对象。

0

becouse json_deocde返回类型是对象类型的在这里是示例

function jsonDecode($json){ 
    //here logic of decoding; 
    return new stdClass(); 

} 

现在将对象的类型

1

即JSON数组,它可以被转换为一个对象或一个关联数组。 如果使用功能

$object = json_decode($array); 

目标变量将被视为一个对象。 如果你的意志仅仅是解码的JSON数组关联数组,你必须添加阵列

$assArray= json_decode($array,true); 

在这种情况下,后一个真实的,你可以访问该值作为一个普通阵列

echo($assArray["a"]); 

将输出1。

不过我建议你检查官方手册,在这些功能

PHP Official manual json_decode

相关问题