获取不等于X的所有数组键

时间:2012-05-04 23:48:29

标签: php forms file-upload

我上传了几个文件,其中包含由PHP脚本处理的表单。有几个“类别”我需要处理不同的方式。换句话说,我需要将$ _FILES数组中的一些文件存储到某个地方,而将其他文件存储在其他地方。

所以我需要的是不是$ _FILES ['filename_form'] 的所有文件(数组键)可以分开存储/使用。

我之所以需要这个,是因为上传的文件数量是动态的,但总是 $ _ FILES ['filename_type1'] $ _ FILES ['filename_type2 _ *] 其中*是从表单输入更多文件时动态增加的数字

可能是一个非常简单的解决方案,要么我太累了,要么我一直在盯着代码,但我知道的是我明天早上需要一个解决方案,所以它的时间敏感= P

感谢我能得到的所有帮助。 谢谢!

6 个答案:

答案 0 :(得分:4)

$files = array();
$filenames = array();
foreach($_FILES as $name => $fileInfo)
{
    if($name != 'filename_form')
    {
        $files[$name] = $fileInfo;
        $filenames[] = $name;
    }
}

答案 1 :(得分:0)

怎么样:

foreach ( $_FILES as $key => $value )
   if ( preg_match ( '/type2/', $key ) )
      // do something with the type2
   else if ( preg_match ( '/type1/', $key ) )
      // do something with these

答案 2 :(得分:0)

<?php
foreach ($_FILES as $key => $value) {
  $a = explode('_', $key);
  $defaultDir = 'myDefaultDirOrPathOrWhatever';
  if ($a[1] == 'type2') {
    $defaultDir = 'myOtherDirWhenMultipleFiles';
    $incrementPassed = $a[2];
  }
  if (isset($incrementPassed)) unset($incrementPassed);
}

答案 3 :(得分:0)

这是另一种方式

$keys = array_keys($thearray);
$filteredArray = array_filter($keys, 'fiterKeys');

function filterKeys($item) {
    if($item != 'valuetocheck') return true;
    else return false;
}

答案 4 :(得分:0)

$type1_files = array(); // Array of files of first type
$type2_files = array(); // Array of files of second type
$underfined_files = array(); // Array of files of unnormal type (who knows :-P)

foreach($_FILES as $name => $value){
    if($name == 'type1'){
        $type1_files[] = $value;
    }
    elseif($name == 'type2'){
        $type2_files[] = $value;
    }
    else{
        $undefined_files[] = $value;
    }
}

在foreach之后,您将文件分成数组,您可以根据需要稍后处理

答案 5 :(得分:0)

<?php

$files = array();
foreach ($_FILES as $filename => $fileinfo) {
  if (strpos($filename, 'form') !== false) {
    $files[$name] = $fileinfo;
    unset($_FILES[$name]);
  }
}

?>

我能想到的最快的方法应该比以前的任何答案都快。