PHP用新结构分组多维数组的内容

Mar*_*all 2 php arrays multidimensional-array

我通常使用Eloquent,因此转置数据要容易得多.但是我在香草PHP中苦苦挣扎.

我尝试过array_map(null, ...$array)因为它不是一个数组而得到错误.

我有以下键控数组:

[
    'email' => [
        "william.pool@gmail.com",
        "martynleeball@gmail.com"
    ],
    'lastName' => [
        'Pool',
        'Ball'
    ],
    'firstName' => [
        'William',
        'Martyn'
    ],
    'id' => [
        'j8zwyk',
        '1'
    ]
]
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为以下格式:

[
    0 => [
        'email' => "william.pool@gmail.com",
        'lastName' => 'Pool',
        'firstName' => 'William',
        'id' => 'j8zwyk'
    ],
    1 => [
        'email' => "martynleeball@gmail.com",
        'lastName' => 'Ball',
        'firstName' => 'Martyn',
        'id' => '1'
    ]
]
Run Code Online (Sandbox Code Playgroud)

Moh*_*mad 7

创建长度为2的新数组并循环遍历原点数组.在循环中将相关项插入到新数组中.

因此,如果您的数组每个键只有2个项目使用

$newArr = [];
foreach($arr as $key=>$item){
    $newArr[0][$key] = $item[0];
    $newArr[1][$key] = $item[1];   
}
Run Code Online (Sandbox Code Playgroud)

但如果它有未知的项目使用

$newArr = [];
foreach($arr as $key=>$item){
    foreach($item as $key2=>$item2)
        $newArr[$key2][$key] = $item2;
}
Run Code Online (Sandbox Code Playgroud)

演示中检查结果

  • 第二个例子是最好的方法,比我的答案更好,因为它不假设所有子数组具有相同的计数. (2认同)