我有以下形式,当发送多张图片时生成一个多维数组,所有数据默认排序。
表单 HTML 和 PHP:
<html>
<body>
<form enctype="multipart/form-data" action="" method="POST">
<input name="image[]" type="file" multiple />
<input type="submit" name="send" value="Send" />
</form>
</body>
</html>
发送它会生成如下数组:
$file1 = array(
'imagen' => array(
'name' => array(
'Image_name',
'Image_name'
),
'type' => array(
'jpg',
'jpg'
),
'tmp_name' => array(
'jpg',
'jpg'
),
'error' => array(
0,
0
),
'size' => array(
'200',
'200'
)
)
);
我需要以更简单的方式重构这个数组,以便各个图像值在一起。
预期输出:
$file2 = array(
array(
'name' => 'Image_name',
'type' => 'jpg',
'tmp_name' => 'jpg',
'error' => 0,
'size' => 200
),
array(
'name' => 'Image_name',
'type' => 'jpg',
'tmp_name' => 'jpg',
'error' => 0,
'size' => 200
)
);
最佳答案
此任务是关于“转置”数组并维护关联键。
三年后,我决定彻底修改/重写这个答案,因为编码标准远低于我现在所能容忍的水平,而且通常噪音太大。我只有两种方法可以在我自己的项目中执行此任务。两者都提供相同的(期望的)结果;区分它们的只是编码风格的问题。
$POST = [
'image' => [
'name' => ['Image_name1', 'Image_name2'],
'type' => ['jpg', 'png'],
'tmp_name' =>['jpg', 'png'],
'error' => [0, 0],
'size' => ['200', '300']
]
];
函数式编程:
$keys = array_keys($POST['image']);
var_export(
array_map(
function(...$col) use ($keys) {
return array_combine($keys, $col);
},
...array_values($POST['image'])
)
);
语言构造语法:
foreach ($POST['image'] as $key => $entries) {
foreach ($entries as $index => $entry) {
$result[$index][$key] = $entry;
}
}
var_export($result);
关于php - 如何转置多维多文件上传提交并维护关联键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834002/