добавление в файл JSON вместо добавления данных изменений - PullRequest
1 голос
/ 17 октября 2019

У меня есть метод, который реализует запись в файл json,

public function setJsonContent(array $data): void
{
    if (file_exists('data/db.json')) {
        $content = $this->getJsonContent();
        if ($content) {
            $data = array_merge($data, $content);
        }
    }
    file_put_contents('data/db.json', json_encode($data));
}

, также есть метод для получения этого файла и данных из него.

public function getJsonContent()
{
    $json = file_get_contents('data/db.json');
    return json_decode($json, true);
}

в другом классеУ меня есть метод, который получает данные от пользователя и записывает их

    $userName = $input->getUserInput('Please, enter user name: ');
    $group = $input->getUserInput('Please, enter group: ');
    $age = $input->getUserInput('Please, enter age: ');

    $this->getJson()->setJsonContent([ $userName => $group, 'age' => $age ]);

при первом запуске будет записано

Please, enter user name: qqq
Please, enter group: www
Please, enter age: eee

{"qqq":"www","age":"eee"}

при следующем запускенапишите

Please, enter user name: aaa
Please, enter group: sss
Please, enter age: ddd

{"aaa":"sss","age":"eee","qqq":"www"}

вопрос: как структурировать запись данных так, чтобы что-то вроде

{
  "name": [
    "group",
    "age"
  ],
  "name2": [
    "group",
    "age"
  ]
}

1 Ответ

0 голосов
/ 17 октября 2019

Вам просто нужно изменить структуру данных, которые вы передаете, сделать из них массив с именем в качестве ключа для подмассива с группой и возрастом (без ключей для последних 2) ...

$this->getJson()->setJsonContent([ $userName => [$group, $age ]]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...