Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 09.01.2019 20:00:45

"Вывернуть" массив ))

Всем привет!
Подскажите, пожалуйста, элегантное решение для преобразования массива вида

$persons = [
            'name'=>[
                0=> 'Vasya',
                1=>'Petya',
                2=>'Kolya'
                ],
            'street' =>[
                0=>'Lenina',
                1=>'Marksa',
                2=>'Engelsa'
            ]
        ];

в

[
  0 => [
    'name' => "Vasya",
    'street' => "Lenina"
  ],
  1 => [
    'name'=>"Petya"
    'street' => "Marksa"
  ],
  2 => [
    "name'=>"Kolya"
    'street' => "Engelsa"
  ]
]

Нужно для создания relationship моделей на основе формы. Или может форму по другому сформулировать?
Спасибо!

Не в сети

#2 09.01.2019 20:16:45

Re: "Вывернуть" массив ))

Под "неэлегантным" я подразумеваю что-то вроде:

$persons = [
            'name'=>[
                0=> 'Vasya',
                1=>'Petya',
                2=>'Kolya'
                ],
            'street' =>[
                0=>'Lenina',
                1=>'Marksa',
                2=>'Engelsa'
            ]
        ];
$people=[];
        foreach($persons as $fieldName => $fields){
            foreach($fields as $k => $field){
                $people[$k][$fieldName] = $field;
            }
        }

Не в сети

#3 14.01.2019 00:18:22

Re: "Вывернуть" массив ))

<?php
$persons = [
        'name'=>[
                0=> 'Vasya',
                1=>'Petya',
                2=>'Kolya'
        ],
        'street' =>[
                0=>'Lenina',
                1=>'Marksa',
                2=>'Engelsa'
        ]
];

// ----
$elegant = array_map(function ($name, $street) {
        return compact('name', 'street');
}, $persons['name'], $persons['street']);
// ----

var_dump($elegant);

Не в сети

#4 14.01.2019 00:23:27

Re: "Вывернуть" массив ))

Благодарю!!

Не в сети

Подвал раздела