У меня есть некоторые проблемы, связанные с json_encode: мне нужно использовать большой массив (несколько элементов по 100 тыс.), Каждый с очень простой структурой (один ключ, одно строковое значение).
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;
}
Задача ещё не решена.
Других решений пока нет …