我有一个包含多个上传输入的表单,而在此过程中,我需要将每个表单分开以便更新数据库
if(isset($_FILES['files'])){
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
$file_name = $_FILES['files']['name'][$key];
$file_size = $_FILES['files']['size'][$key];
$file_tmp = $_FILES['files']['tmp_name'][$key];
$file_type = $_FILES['files']['type'][$key];
echo '<pre>'.print_r($_FILES['files'], TRUE).'</pre>';
}
}
假设我有2个上传文件,这里是这些文件的分层视图中的数据:
Array
(
[name] => Array
(
[0] => model8.jpg
[1] => leslie.jpg
)
[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
)
[tmp_name] => Array
(
[0] => C:\xampp\tmp\php906A.tmp
[1] => C:\xampp\tmp\php906B.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 13285
[1] => 45086
)
)
Array
(
[name] => Array
(
[0] => model8.jpg
[1] => leslie.jpg
)
[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
)
[tmp_name] => Array
(
[0] => C:\xampp\tmp\php906A.tmp
[1] => C:\xampp\tmp\php906B.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 13285
[1] => 45086
)
)
如何将每个数据设置为变量以进行进一步处理?
谢谢!
答案 0 :(得分:2)
使用此PHP函数重新排序$ _FILES数组:
<?php
function diverse_array($vector) {
$result = array();
foreach($vector as $key1 => $value1){
foreach($value1 as $key2 => $value2){
$result[$key2][$key1] = $value2;
}
}
return $result;
}
?>
初始示例$ _FILES array:
array(1) {
["upload"]=>array(2) {
["name"]=>array(2) {
[0]=>string(9)"file0.txt"
[1]=>string(9)"file1.txt"
}
["type"]=>array(2) {
[0]=>string(10)"text/plain"
[1]=>string(10)"text/html"
}
}
}
重新排序示例$ _FILES数组:
array(1) {
["upload"]=>array(2) {
[0]=>array(2) {
["name"]=>string(9)"file0.txt"
["type"]=>string(10)"text/plain"
},
[1]=>array(2) {
["name"]=>string(9)"file1.txt"
["type"]=>string(10)"text/html"
}
}
}
使用这样的功能:
<?php $upload = diverse_array($_FILES["upload"]); ?>
现在您可以访问单个上传的文件(任意数量的文件),如下所示:
<?php
foreach($upload as $file){
$file_name = $file['name'];
$file_size = $file['size'];
$file_tmp = $file['tmp_name'];
$file_type = $file['type'];
$file_error = $file['error'];
}
?>