PHP – Как обновить данные JSON в txt-файле?

Вот пример данных 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));