PHP将多个上传的文件分解为变量


PHP explode multiple uploaded file into variable

我得到了一个具有多个上传输入的表单,而在此过程中,我需要将每个表单分开,以便更新数据库

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>';
    }
}

假设我上传了两个文件,这是这些文件的分层视图中的数据:

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
    )
)

如何将每个数据设置为一个变量以供进一步处理?

谢谢!

使用这个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'];
    }
?>