json Cannot use object of type stdClass as array

[ 2013-01-26 16:16:03 | 作者: admin ]
字号: | |
json_decode(Cannot use object of type stdClass as array)

最近用 php 的 array 處理下述的程式碼,

$author = 'Mary';
$test[$author] = array('message'=>'測試', 'time'=> 1237175074);
$test2 = json_decode(json_encode($test));
print_r($test2[$author]);

一直得到下述的錯誤訊息

Cannot use object of type stdClass as array

這個程式碼,只要第三行加個 true,就可以了。

$author = 'Mary';
$test[$author] = array('message'=>'測試', 'time'=> 1237175074);
$test2 = json_decode(json_encode($test), true);
print_r($test2[$author]);

這個表示 decode 成 assoc array 而非預設的 stdClass,

所謂的 stdClass 就是一般「類別」,在 PHP 下也可以 encode 成 json code.

比如,原本的程式,若做 print_r($test2) 會得到下述的結

stdClass Object
(
        [Mary] => stdClass Object
               (
                    [message] => 測試
                    [time] => 1237175074
               )
)

這表示一個類別而且包含數值的資料,相當於下面的資料結構。

Class Object
{
        Class Mary
               (
                    message: 測試
                    time: 1237175074
               )
}

弄成 stdClass 的方式,也不是不可以,若要取得 assoc 下的 $test2['Mary'],在類別只要

$test2->Mary



$test2->$author

即可,只是就不是很直覺是原來 $test2['Mary'] 的意思了。
[最后修改由 admin, 于 2013-01-26 16:17:42]
评论Feed 评论Feed: http://blog.xg98.com/feed.asp?q=comment&id=1969

这篇日志没有评论。

此日志不可发表评论。