PHP группировка содержимого многомерного массива с новой структурой - PullRequest
0 голосов
/ 28 ноября 2018

Я обычно использую Eloquent, поэтому перенос данных намного проще.Однако я борюсь с этим в ванильном PHP.

Я пытался array_map(null, ...$array), однако получаю ошибку из-за того, что он не является массивом.

У меня есть следующий массив ключей:

[
    'email' => [
        "william.pool@gmail.com",
        "martynleeball@gmail.com"
    ],
    'lastName' => [
        'Pool',
        'Ball'
    ],
    'firstName' => [
        'William',
        'Martyn'
    ],
    'id' => [
        'j8zwyk',
        '1'
    ]
]

Мне нужно преобразовать это в следующий формат:

[
    0 => [
        'email' => "william.pool@gmail.com",
        'lastName' => 'Pool',
        'firstName' => 'William',
        'id' => 'j8zwyk'
    ],
    1 => [
        'email' => "martynleeball@gmail.com",
        'lastName' => 'Ball',
        'firstName' => 'Martyn',
        'id' => '1'
    ]
]

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018
$newArray = [];
foreach ($array as $key => $value) {
    for ($i = 0; $i < count($value); $i++) {
        $newArray[$i][$key] = $value[$i];
    }
}
0 голосов
/ 28 ноября 2018

Создание нового массива длиной 2 и цикл по исходному массиву.В цикле вставьте соответствующий элемент в новый массив.

Поэтому, если в вашем массиве есть только 2 элемента на ключ, используйте

$newArr = [];
foreach($arr as $key=>$item){
    $newArr[0][$key] = $item[0];
    $newArr[1][$key] = $item[1];   
}

Но если в нем есть неизвестный элемент, используйте

$newArr = [];
foreach($arr as $key=>$item){
    foreach($item as $key2=>$item2)
        $newArr[$key2][$key] = $item2;
}

Проверить результат в демо

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