Объединить несколько массивов в php laravel

Объединить несколько массивов в php laravel

12.01.2020 11:41:59 Просмотров 29 Источник

Допустим у меня есть набор данных первого имени

first name : `{ "abc","bvd","jhhg", "jju","jju"}`
Last name : `{ "hhh","uuu","tre", "vvg","yyy"}`
Age : `{ "44","33","34", "34,"65"}`

Я хочу, чтобы результат вернулся как

{
"fname" : "abc",
"lname" : "hhh",
"age" : "44"
},
{
"fname" : "bvd",
"lname" : "uuu",
"age" : "33"
},
{
"fname" : "jhhg",
"lname" : "tre",
"age" : "34"
}

Как это сделать в php / laravel

Я достиг результата но реакция слишком медленная

  $cart = array();

   for($i = 1;$i<=($qty);$i++)
   {

       $fnames = CreateFirstName::all()->random(1);

       $fname = ($fnames[0]->fname);

       $images = CreateImageName::all()->random(1);

       $image = ($images[0]->imagelocation);


       $lnames = CreateLastName::all()->random(1);
       $lname = ($lnames[0]->lname);

       $cart[] = [
           'id' => $images[0]->id,
           'fname' => mb_substr($fname, 0, 10),
           'lname' => mb_substr($lname, 0, 10),
           'age' => rand(18,43),
           'city' => $region_name,
           'image' => $image

       ];

   }


   $collection = collect($cart);

image

Ответ приходит более чем через 20000 МС на сервер или локальную среду

У вопроса есть решение - Посмотреть?

https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel#comment105557573_59702251
"как это сделать в php / laravel" исследуйте в интернете, начните кодировать, обратитесь за помощью, если вы столкнетесь с какими-либо ошибками. Переполнение стека-это не служба написания кода. Мы всегда рады помочь и поддержать новых программистов, но вы должны помочь себе в первую очередь. Предполагается, что вы попытаетесь написать код самостоятельно. Пожалуйста, прочитайте, Как создать минимальный, воспроизводимый пример и как я могу задать хороший вопрос? .
https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel#comment105557688_59702251
@kobid, вам нужно всего 3 элемента или все они должны быть возвращены так, как вы поделились ожидаемым результатом?

Ответы - Объединить несколько массивов в php laravel / Merge multiple array in php laravel

Является ответом!
Danyal Sandeelo

12.01.2020 11:52:12

Я предполагаю, что размер всех 3 массивов одинаков

$finalArray = array();
for($i=0;$i<count($firstArray);$i++){
    $finalArray[] = array("fname"=>$firstArray[$i], "lname"=>$lastArray[$i],"age"=>$ageArray[$i]);
} 

$finalArrayимеет то же, что и вы.

https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel/59702311#comment105557656_59702311
Однако это не вернет желаемый результат OP, но все элементы из массивов
https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel/59702311#comment105557671_59702311
вопрос был обновлен. @kerbholz
https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel/59702311#comment105557680_59702311
Часть "я хочу, чтобы результат возвращался как" по-прежнему содержит только три элемента
https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel/59702311#comment105557818_59702311
@DanyalSandeelo да его рабочий спасибо
Rwd

12.01.2020 12:30:18

В качестве альтернативы принятому ответу вы также можете использовать array_map .

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

$people = array_map(function ($fname, $lname, $age) {
    return [
        'fname' => $fname,
        'lname' => $lname,
        'age'   => $age,
    ];
}, $firstNames, $lastNames, $ages);

Затем вы можете сделать его еще короче с помощью compact

$people = array_map(function ($fname, $lname, $age) {
    return compact('fname', 'lname', 'age');
}, $firstNames, $lastNames, $ages);
https://stackoverflow.com/questions/59702251/merge-multiple-array-in-php-laravel/59702525#comment105558076_59702525
Лучшее решение ......
Закрыть X