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)
但这只是增加数组索引而不是在特定键下进行。
请提出我在这里错过的事情
尝试这个 :
$result = [];
foreach ($array as $key => $subarray) {
foreach ($subarray as $index => $data) {
$result[$index][$key] = $data;
}
}
Run Code Online (Sandbox Code Playgroud)
此处的示例:链接
实现此结果的一种方法是从数组的第一个元素中获取键,并使用它们来遍历每个元素,方法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)