我正在尝试通过单个输入从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
}
我可以使用上面显示的第一次尝试,但在这种情况下,我将无法将整个文件数组放在适当的数组中。
你能解释一下为什么这两次尝试会给出不同的答案吗?
你能帮我找一个解决方案吗?
提前致谢。
答案 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;
}
}