2012-05-04 5 views
1

PHPスクリプトで処理されるフォームでアップロードされたファイルがいくつかあります。別の方法で処理する必要があるいくつかの「カテゴリ」があります。つまり、$ _FILES配列内のファイルのいくつかは、どこかに格納され、他のいくつかは他の場所に格納されている必要があります。Xと等しくない配列キーをすべて取得します

私が必要とするのは、ではない$ _FILES ['filename_form']のファイル(配列キー)を別々に保存/使用することです。

私がアップロードされているファイルの量が動的であるためである必要がある理由を、常にどちらかの$ _FILES [「filename_type1」] *その単位数であるまたは$ _FILES [ 'filename_type2_の*]より多くのファイルがフォームから入力されたとき(動的に)

私はあまりにも疲れているかもしれないし、多分私はコードを凝視しすぎているかもしれないが、私が知っているのは解決策が必要だということだ明日の朝の前に、時間に敏感なので、P

私が得ることができるすべての助けを感謝します。 ありがとうございました!あなたのファイルがどのあなたができる配列、に分かれていますforeachの後

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

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

答えて

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

おそらく '$ val'を' $ fileInfo'に変更しました。文字列と '!=='を比較しないほうがいいと思いますが、 '!='だけで十分でしょう。 – Eugene

+0

それは悪い提案ではないし、私はそれらを私のポストに入れた。 – Zombaya

0

あなたが望むように後で処理する

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); 
} 
0

ここ:どの程度

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 ($_FILES as $key => $value) 
    if (preg_match ('/type2/', $key)) 
     // do something with the type2 
    else if (preg_match ('/type1/', $key)) 
     // do something with these 
0
<?php 

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

?> 

私が考えることができる最速の方法は、以前の答えのいずれか早くする必要があります。

関連する問題