2015-10-20 67 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

相關問題