PHP json_decode()输出:对象与数组?

时间:2013-03-19 07:32:14

标签: php benchmarking json

对于函数json_decode(),有2个输出选项,JSON Object或Array。

$obj = json_decode($json_string, false);

$array = json_decode($json_string, true);

哪种类型表现更好?

1 个答案:

答案 0 :(得分:3)

对于函数json_decode(),人们可能会在将结果输出为Object或Associate Array之间挣扎。在这里,我进行了基准测试。

使用的代码(其中$json_string是Google Maps V3地理编码API的JSON输出):

// object
$start_time = microtime(true);
$json = json_decode($json_string, false);
echo '(' . $json->results[0]->geometry->location->lat . ',' . $json->results[0]->geometry->location->lng . ')' . PHP_EOL;
$end_time = microtime(true);
echo 'JSON Object: ' . round($end_time - $start_time, 6) . 's' . PHP_EOL;

// array
$start_time = microtime(true);
$json = json_decode($json_string, true);
echo  '(' . $json['results'][0]['geometry']['location']['lat'] . ',' . $json['results'][0]['geometry']['location']['lng'] . ')' . PHP_EOL;
$end_time = microtime(true);
echo 'JSON Array: ' . round($end_time - $start_time, 6) . 's' . PHP_EOL;

我发现Array比Object快30%~50%。