数组格式按键值php

Lem*_*azi 2 php arrays multidimensional-array array-filter

我试图通过键分开一些值。

我当前的数组是这样的

Array
(
    [name] => Array
        (
            [0] => test1
            [1] => test2
        )

    [type] => Array
        (
            [0] => image/jpeg
            [1] => image/jpeg
        )

    [tmp_name] => Array
        (
            [0] => D:\xampp5\tmp\php5F43.tmp
            [1] => D:\xampp5\tmp\php5F63.tmp
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
        )

    [size] => Array
        (
            [0] => 49293
            [1] => 20286
        )

)
Run Code Online (Sandbox Code Playgroud)

我期望的数组将是这样的

Array
( 
 [0] =>(
    [name] =>  test1

    [type] =>  image/jpeg

    [tmp_name] => D:\xampp5\tmp\php5F43.tmp

    [error] => 0

    [size] =>  49293
    )

[1] =>(
    [name] =>  test2

    [type] =>  image/jpeg

    [tmp_name] => D:\xampp5\tmp\php5F63.tmp

    [error] => 0

    [size] =>  20286
    )
)
Run Code Online (Sandbox Code Playgroud)

为此,我尝试这样

$files = array();
$i = 0;
foreach ($array as $key => $value) {
    foreach ($value as $item) {
        $files[$i][] = $item;
        // echo '["'.$key.'"] - '.$item.'<br>';
        $i++;
    }
}
Run Code Online (Sandbox Code Playgroud)

但这只是增加数组索引而不是在特定键下进行。

请提出我在这里错过的事情

Mic*_*ger 7

尝试这个 :

$result = [];

foreach ($array as $key => $subarray) {
    foreach ($subarray as $index => $data) {
        $result[$index][$key] = $data;
    }
}
Run Code Online (Sandbox Code Playgroud)

此处的示例:链接


Nic*_*ick 5

实现此结果的一种方法是从数组的第一个元素中获取键,并使用它们来遍历每个元素,方法array_combine是将顶层的键与数组中每个元素的键值结合在一起:

$result = array();
$keys = array_keys($array);
foreach (array_keys(current($array)) as $key) {
    $result[$key] = array_combine($keys, array_column($array, $key));
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [0] => Array
        (
            [name] => test1
            [type] => image/jpeg
            [tmp_name] => D:\xampp5\tmp\php5F43.tmp
            [error] => 0
            [size] => 49293
        )
    [1] => Array
        (
            [name] => test2
            [type] => image/jpeg
            [tmp_name] => D:\xampp5\tmp\php5F63.tmp
            [error] => 0
            [size] => 20286
        )
)
Run Code Online (Sandbox Code Playgroud)

3v4l.org上的演示