【问题标题】:How to use a file instead of a database?如何使用文件而不是数据库?
【发布时间】:2017-10-14 23:55:27
【问题描述】:

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

第一个数组示例:

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

【问题讨论】:

  • 您的意思是NoSQL Database?说真的,最好使用 MongoDB 或其他具有平面文件数据库模式的东西..

标签: php arrays database file bigdata


【解决方案1】:

你最好使用数据库来完成这项任务。

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

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

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

【讨论】:

    【解决方案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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多