Как создать json динамически вложенную информацию внутри массива - PullRequest
0 голосов
/ 30 мая 2020

Я разрабатываю код для анализа пикселей изображения (всего 1 048 576 для каждого изображения). Поскольку для вставки в базу данных потребуется огромное количество информации, я решил, что лучшим вариантом будет создание файла для хранения всех результатов.

Итак, я использую PHP - Laravel. Не буду показывать весь код, но дам несколько подсказок о том, что я сделал.

1.-Прежде всего, я создал в начале своего кода команду для создания моего файла results.txt:

$resultsFile = Storage::put('results/results.txt', '');

2.- После обработки информации это то, что я хочу сохранить: полученный материал и координаты

$data_to_insert = [
                    'material' => 'how',
                    'coord_x' => $pixel_x,
                    'coord_y' => $pixel_y,
                ];

3.- Я создал эти заголовки для своего файла:

$headers = [
             'orbit' => 'Vesta Test',
              'results' => []
];

$headers['results'] = $data_para_insertar;
file_put_contents('results.txt', json_encode($headers));

Ну, проблема возникает, когда я пытаюсь получить уже сохраненную информацию:

$json_data = json_decode(Storage::get('results/results.txt'), true);

И пытаюсь объединить мои уже сохраненные результаты с моим новым результатом:

$results = array_merge($json_data['results'], $data_to_insert);

Я просто сохранить последний регистр в моем файле:

{"orbit":"Vesta Test","results":{"material":"how","coord_x":946,"coord_y":963}}

Я хотел бы сохранить информацию о «результатах» таким или подобным образом

{
  "orbit":"Vesta Test",
  "results": [
              {"material":"how","coord_x":946,"coord_y":963}, 
              {"material":"how","coord_x":955,"coord_y":933},
              .....
   ]
}

Все происходит внутри оператора for.

Большое спасибо за вашу помощь.

1 Ответ

2 голосов
/ 30 мая 2020

Вместо

$results = array_merge($json_data['results'], $data_to_insert);

вам нужно добавить данные в элемент результатов, вы можете использовать

$json_data['results'][] = $data_to_insert;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...