Вставка нового элемента в многомерный массив в php - PullRequest
1 голос
/ 24 апреля 2020
<?php
  $accounts = [["felh" => "minta", "password" => "Meow123", "mail" => "pelda@gmail.com"],
  ["felh" => "minta2", "password" => "Meow1232", "mail" => "pelda2@gmail.com"]];
 if (isset($_POST["regisztral"])) {
    $username = $_POST["felh"];
    $password = $_POST["password"];
    $email = $_POST["mail"];
    $password2 = $_POST["password2"];
       if (strlen($password) < 8)
       die("<b>error<b>");
       if ($password !== $password2)
       die("<b>error</b>");
        if ($_POST['feltetel'] != 'igen') die("<b>error</b>");
        foreach ($accounts as $account) {
        if ($account["felh"] === $username)     die("<b>error:</b> taken!");
         if ($account["mail"] === $email)     die("<b>error:</b>taken!");
        }

            $accounts[] = ["felh" => $username, "password" => $password, "mail" => $email];
        $file = fopen("accounts.txt", "w");
             foreach ($accounts as $account)
             fwrite($file, serialize($account) . "\n");
             fclose($file);

     echo "<br>Succeed<br/>";
     }

Пользователь должен заполнить регистрационную форму, и моя программа должна решить, будут ли приняты его имя пользователя и адрес электронной почты или нет. Я хочу отсортировать все имена пользователей, пароли и адреса электронной почты в двухмерный массив, а затем записать его в текстовый файл. Моя проблема в том, что каждый раз, когда я вставляю новую запись в массив, он переключает последний элемент на тот, который я только что вставил, вместо того, чтобы хранить его и добавлять новый элемент в конец массива. Как я могу это решить?

* edit Я загрузил весь раздел php моего кода. Итак, чтобы быть ясным, моя проблема заключается в следующем: 2 записи, которые я добавил вручную в начале кода, работают отлично. Когда я хочу вставить, скажем, cat aaaaaaaa и nothing@gmail.com, он работает отлично. Но когда я отправляю другое значение после этого, скажем, собака bbbbbbbb и something@gmail.com она переключает cat aaaaaaaaa и nothing@gmail.com на dog bbbbbbbb и something@gmail.com. Однако я хочу, чтобы кошка aaaaaaa nothing@gmail.com и затем добавляла dog bbbbbbbb something@gmail.com до конца массива

1 Ответ

0 голосов
/ 24 апреля 2020

Что вызывает у вас проблемы * php функция fopen () и режим. В настоящее время в коде вы используете режим 'w' и в ручном режиме php этот режим:

Открыть только для записи; поместите указатель файла в начале файла и обрежьте файл до нулевой длины. Если файл не существует, попытайтесь его создать.

Каждый раз, когда вы перезаписываете этот файл с именем accounts.txt новыми данными.

Поэтому вам следует использовать режим 'a' для размещения указатель на конец файла и добавление новых данных.

Открыть только для записи; поместите указатель файла в конец файла. Если файл не существует, попытайтесь создать его. В этом режиме fseek () не действует, записи всегда добавляются.

test: https://repl.it/@kallefrombosnia / DiscreteOnerlookedLists

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...