如何使用文件而不是数据库?

时间:2017-05-16 04:09:37

标签: php arrays database file bigdata

我有 2 数组。第一个数组包含正确的单词变体,第二个数组包含不正确的单词变体。我希望它们通过组合成一个数组,将错误的单词传递给键和正确版本的单词的值。然后将它们写入文件并使用它。我将数组的内容保存在一个文件中,但是对同一个文件有一条新记录,所有数据都清除,只重新写入新条目并删除旧条目自动即可。我想在将新数据写入数组之前,检查重复,如果这样的 未写入在带有数组的文件中,然后将其写入文件而不清除文件的先前数据。一般来说,这将选择文件数据库来存储超过十亿字。数据库是否具有最佳速度或文件?

  

示例第一个数组:

$uncorrect = array
(
0 => "мувосокори",
1 => "мунаггас",
2 => "мангит",
3 => "мангития",
4 => "мунфачир",
5 => "мунфачира",
6 => "манфиатпарасти",
7 => "манфиатчу",
8 => "манфиатчуи",
9 => "манфиатхох",
10 => "манфи",
.....................
);
  

示例第二个数组:

$correct = array
(
0 => "мувосокорӣ",
1 => "мунағғас",
2 => "манғит",
3 => "манғития",
4 => "мунфаҷир",
5 => "мунфаҷира",
6 => "манфиатпарастӣ",
7 => "манфиатҷӯ",
8 => "манфиатҷӯӣ",
9 => "манфиатхоҳ",
10 => "манфӣ",
.....................
);
  

我将两个数组与此代码组合在一起:

$dict = array_combine($uncorrect, $correct);
  

示例结果我的数组包含数据:

$dict = array (
    "мувосокори" => "мувосокорӣ",
    "мунаггас" => "мунағғас",
    "мангит" => "манғит",
    "мангития" => "манғития",
    "мунфачир" => "мунфаҷир",
    "мунфачира" => "мунфаҷира",
    "манфиатпарасти" => "манфиатпарастӣ",
    "манфиатчу" => "манфиатҷӯ",
    "манфиатчуи" => "манфиатҷӯӣ",
    "манфиатхох" => "манфиатхоҳ",
    "манфи" => "манфӣ",
    "минкор" => "минқор",
    .....................................
    );
  

我正在使用以下代码写一个文件:

file_put_contents("data.json", json_encode($dict));
  

我将使用此代码获取数组:

$array = json_decode(file_get_contents("data.json"));

2 个答案:

答案 0 :(得分:2)

每当您想要添加新项目时,只需先加载文件,然后在再次保存之前合并新项目。 file_put_contents将覆盖那里的任何内容,因此您需要在运行该函数之前获取该数据。像这样:

$array = json_decode(file_get_contents("data.json"));
$newArray = array(
  array( "rightWord" => "wrongWord")
);
$finalArray = array_merge($newArray, $array);
file_put_contents("data.json", json_encode($finalArray));

答案 1 :(得分:2)

最好使用数据库完成此任务。

如果您决定保留文件存储,要解决您的问题,您丢失旧条目的原因是您在添加新值之前忘记加载它们。

// more or less something like below
$array = json_decode(file_get_contents("data.json"));
$dict = array_combine($incorrect, $correct);
$newArray = array_merge($array, $dict);
file_put_contents("data.json", json_encode($newArray));

这对于数十亿或多行来说效率不高,特别是如果每​​次用户加载页面时都会加载它。