PHP / Laravel - создайте массив объектов из двух простых массивов или ассоциативный массив, который объединяет эти два - PullRequest
0 голосов
/ 05 октября 2018

Я ищу способ преобразования ассоциативного массива php в массив объектов и ввода каждой ассоциации.Я мог бы также рассматривать это как два отдельных простых массива, один с именами и один с классами.Вот ассоциативный пример ...

array:2 [
  "someName" => "someClass"
  "someOtherName" => "someOtherClass"
]

Или

names => [0 => 'name1', 1 => 'name2']
classes => [0 => 'class1', 1 => 'class2']

... в любом случае, я ищу конечный результат, подобный этому:

[
    { 'name': 'someName', 'class': 'someClass' },
    { 'name': 'someOtherName', 'class': 'someOtherClass' }
]

Какой самый умный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я думаю, что лучший способ - это объединить метод zip с transform или map :

$names = [0 => 'name1', 1 => 'name2'];
$classes = [0 => 'class1', 1 => 'class2'];

$merged = collect($names)->zip($classes)->transform(function ($values) {
    return [
        'name' => $values[0],
        'class' => $values[1],
    ];
});

dd($merged->all());

В результате вы получитемассив:

array:2 [▼
  0 => array:2 [▼
    "name" => "name1"
    "class" => "class1"
  ]
  1 => array:2 [▼
    "name" => "name2"
    "class" => "class2"
  ]
]

, поэтому, если вам нужен json, вы можете просто использовать json_encode($merged)

0 голосов
/ 05 октября 2018

Этот вывод совпадает с вашим первым блоком.

$array = ['someName' => 'someClass', 'someOtherName'  => 'someOtherClass'];

Вы также можете использовать коллекции Laravel, предоставляя удобную и удобную оболочку для работы с массивами данных.Например, проверьте следующий код.

$collection = collect([
    'names' => [
         ['0' => 'name1', '1' => 'name2'],
     ],
    'classes' => [
         ['0' => 'class1', '2' => 'class2']
     ],
]);

Существует также метод объединения, который вы ищете, метод combine объединяет значения коллекции в виде ключей со значениями другого массива или коллекции: Подробнее см. На https://laravel.com/docs/5.7/collections

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