Изначально файл data.json пустой
$text[1] это перемменная типа string в которой храниться сумма, $userId это перемменная типа integer
После запуска данного кода в data.json записывается null
$file = file_get_contents('data.json');
$taskList = json_decode($file, TRUE);
unset($file);
$taskList[$userId] = array("account_id" => $text[1], "time" => time());
file_put_contents('data.json', json_encode($taskList));
unset($taskList);
Изначально файл data.json пустой
В этой фразе и кроется ответ. "Пусто" - это не подпадает под понятие "JSON-строка". Или проверяйте полученные данные из файла на "пустоту":
$file = file_get_contents('data.json');
if(empty($file)) {
$taskList = [];// для PHP < 5.4 - $taskList = array();
}
Или используйте метод json_last_error()
$taskList = json_decode($file, TRUE);
if(json_last_error() !== JSON_ERROR_NONE) {
$taskList = [];
}
В крайнем случае, можно принудительно приводить тип данных к массиву (но лично я так бы не делал)
$taskList = (array)json_decode($file, TRUE);
P.S. Зачем на каждом шагу удалять переменные? Если нет специфической задачи, то это абсолютно лишнее телодвижение.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей