用PHP处理几个文件

时间:2014-07-10 12:12:09

标签: php file input

我正在尝试通过单个输入从Web应用程序中的多个.csv导入数据,但我正在努力操纵$ _FILES。

我想要做的就是根据文件的名称将文件分成两个数组。我无法在服务器上上传这些文件。

这是用于上传文件的表单页面中的输入:

<input type="file" name="file[]" id="inputrapports" accept=".csv" multiple="true"/>

在我的操作页面中,我这样做:

$files=$_FILES['file'];
$q=array();
$c=array();
foreach($files as $file){
    if(strtoupper(substr(str_replace(' ','',$file['name']),7,1))=="Q"){
        $q[]=$file;
    }else{
        $c[]=$file;
    }
}

不幸的是,它不起作用。所以我尝试了这个:

foreach($files['name'] as $f){
    echo $f; //I'm getting the name
}
foreach($files as $f){
    echo $f['name']; //I'm not
}

我可以使用上面显示的第一次尝试,但在这种情况下,我将无法将整个文件数组放在适当的数组中。

你能解释一下为什么这两次尝试会给出不同的答案吗?

你能帮我找一个解决方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

解决这个问题的肮脏方法是:

$files = $_FILES['file'];
for($i=0;$i<count($files['tmp_name']); $i++)
{
    echo $files['name'][$i];
}

另一种方法来自php documentation

function diverse_array($vector) { 
    $result = array(); 
    foreach($vector as $key1 => $value1) 
        foreach($value1 as $key2 => $value2) 
            $result[$key2][$key1] = $value2; 
    return $result; 
}

$files = diverse_array($_FILES["file"]);

然后继续你的第一次预告。

$q=array();
$c=array();
foreach($files as $file){
    if(strtoupper(substr(str_replace(' ','',$file['name']),7,1))=="Q"){
        $q[]=$file;
    }else{
        $c[]=$file;
    }
}