我有一些与 json_encode 相关的问题:我需要使用一个大数组(几个 100k 项),每个都有非常简单的结构(一个键,一个字符串值)。json_decode 工作正常,但是一旦我想对其进行 json_encode 编码,它就非常慢。由于我完全控制了这里的数据,所以我尝试编写一个超级简单的 json 编码器,而且速度很快。我很惊讶,因为我的编码功能很粗糙,并且没有任何内部 php 优化,而 json_encode 中肯定存在这些优化。
知道问题可能是什么吗?
我把我的编码器功能放在下面以供参考。
谢谢
protected function simpleJsonEncoder($data) {
if (is_array($data)) {
$is_indexed = (array_values($data) === $data);
$tab_str = [];
if ($is_indexed) {
foreach($data as $item) {
$str_item = $this->simpleJsonEncoder($item);
$tab_str[] = $str_item;
}
$result = '[' . implode(',', $tab_str) . ']';
}
else {
foreach($data as $index => $item) {
$str_item = $this->simpleJsonEncoder($item);
$tab_str[] = '"' . htmlspecialchars($index, ENT_QUOTES) . '":' . $str_item;
}
$result = '{' . implode(',', $tab_str) . '}';
}
}
else {
$result = '"' . htmlspecialchars($data, ENT_QUOTES) . '"';
}
return $result;
}