Преобразовать в массив, коллекцию или список - PullRequest
0 голосов
/ 08 мая 2019

У меня большой кусок данных в этом формате:

 [
    {"date":"2018-11-17"},{"weather":"sunny"},{"Temp":"9"},
    {"date":"2014-12-19"},{"Temp":"10"},{"weather":"rainy"},
    {"date":"2018-04-10"},{"weather":"cloudy"},{"Temp":"15"},
    {"date":"2017-01-28"},{"weather":"sunny"},{"Temp":"12"}
 ]

Есть ли более быстрый и эффективный способ организации и сохранения базы данных для дальнейшего использования?Например, сравнение температуры для разных дней и т. Д. [date,weather,Temp] должны быть в одном наборе.

Я пробовал str_replace(), но я хотел бы знать, есть ли лучший способ.

1 Ответ

1 голос
/ 08 мая 2019

Учитывая ваш комментарий, кажется, что это массив объектов, в котором каждые три объекта делают запись (то есть в форме: date, weather & temp), поэтомуВы можете создать эту настройку с помощью коллекций:

$string = ['your', 'json', 'string'];
$records = collect(json_decode($string))
               ->chunk(3) // this creates a subset of every three items
               ->mapSpread(function ($date, $weather, $temp) { // this will map them
                   return array_merge((array) $date, (array) $weather, (array) $temp);
               });

Это даст вам такой вывод:

dd($records);
=> Illuminate\Support\Collection {#3465
     all: [
       [
         "date" => "2018-11-17",
         "weather" => "sunny",
         "Temp" => "9",
       ],
       [
         "date" => "2014-12-19",
         "Temp" => "10",
         "weather" => "rainy",
       ],
       [
         "date" => "2018-04-10",
         "weather" => "cloudy",
         "Temp" => "15",
       ],
       [
         "date" => "2017-01-28",
         "weather" => "sunny",
         "Temp" => "12",
       ],
     ],
   }

PS: чтобы получитьМассив этой коллекции просто прикрепите ->all() в конце.


В документации Collections вы можете найти хорошее объяснение chunk()и mapSpread() методов, а также остальных доступных методов .

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