我在編程世界很新。這可能是一個非常愚蠢的問題。但是我需要一個關於這個問題的清晰概念,這就是我問這個問題的原因。爲什麼這個變量作爲一個對象?
<?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'的工作方式 –