Вот пример данных JSON, сохраненный в файле data.txt
[ {"name":"yekky"}, {"name":"mussie"}, {"name":"jessecasicas"} ...// many rows ]
Я хотел бы обновить файл, чтобы он выглядел следующим образом:
[ {"name":"yekky","num":"1"}, {"name":"mussie","num":"2"}, {"name":"jessecasicas","num":"3"} ...// many rows ]
Это то, что я получил до сих пор:
$json_data = file_get_contents('data.txt'); // What goes here?
И как подсчитать количество строк в дереве JSON?
Используйте json_decode()
чтобы декодировать данные JSON в массиве PHP, манипулировать массивом PHP, а затем перекодировать данные с помощью json_encode()
.
Например:
$json_data = json_decode(file_get_contents('data.txt'), true); for ($i = 0, $len = count($json_data); $i < $len; ++$i) { $json_data[$i]['num'] = (string) ($i + 1); } file_put_contents('data.txt', json_encode($json_data));
Для таких задач вы должны использовать библиотеку PHP JSON . Например, прочитав данные JSON из файла, сделайте следующее:
$json = json_decode($json_data); $itemCount = count($json);
После изменения данных JSON просто заново закрепите его:
$json_data = json_encode($json);
Кроме того, вы, похоже, хотите бить ваши данные JSON. Мой совет заключается в том, чтобы просто использовать все, что вышло из json_encode
и сохранить его в своем файле, потому что это, вероятно, будет самым маленьким (по размеру файла) возможным представлением ваших данных JSON.
Если вы отформатируете его в удобном для читателя способом, у вас будет много дополнительных пробелов / табуляций / разрывов строк, которые увеличивают размер файла и время разбора.
Если вам нужно прочитать его самостоятельно, вы все равно сможете украсить свои данные JSON вручную .
$file = 'data.txt'; $data = json_decode(file_get_contents($file)); foreach ($data as $key => $obj) { $obj->num = (string)($key+1); } file_put_contents($file, json_encode($data));