PHP - 如何更新txt文件中的JSON数据?

时间:2011-06-11 00:32:46

标签: php json

以下是保存在文件data.txt

中的JSON数据示例
   [
     {"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树中有多少行?

3 个答案:

答案 0 :(得分:6)

使用json_decode()解码PHP数组中的JSON数据,操作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));

答案 1 :(得分:2)

您应该使用PHP JSON library执行此类任务。例如,在从文件中读取JSON数据后,执行以下操作:

$json = json_decode($json_data);
$itemCount = count($json);

修改了JSON数据后,再次对其进行编码:

$json_data = json_encode($json);

此外,您似乎想要美化您的JSON数据。我建议只使用json_encode中的任何内容并将其保存到您的文件中,因为它可能是JSON数据中最小的(文件大小)可能的表示形式。

如果以人类可读的方式对其进行格式化,则会有大量额外的空格/制表符/换行符,这会增加文件大小和解析时间。

如果您需要自己阅读,您仍然可以beautify your JSON data by hand

答案 2 :(得分:2)

$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));