2

私は作業してい$_FILESますが、フォームに空のファイル入力があるため、配列に空の配列要素が含まれることがあります。これらの要素の設定を解除しようとしています。

私はこれらのコードスニペットを試しました:

foreach($_FILES['images']['name'] as $image)
{
    if(empty($image))
    {
        unset($image);
    }
}

foreach($_FILES['images']['name'] as $image)
{
    if($image == "")
    {
        unset($image);
    }
}

foreach($_FILES['images']['name'] as $image)
{
    if(!$image)
    {
        unset($image);
    }
}

しかし、配列は常に空の要素で返されます。PHPで空の$_FILES配列要素を削除する正しい方法は実際にありますか?

4

5 に答える 5

5

ステートメント $imageを使用するforeach($_FILES['images']['name'] as $image)と、配列内の実際の要素のコピーになります。つまり、そのコピーの設定を解除することです。これを行う方法は次のとおりです。

foreach( $_FILES['images']['name'] as $key => $value ) {
    if( empty($value) ) {
        unset( $_FILES['images']['name'][$key] );
    }
}
于 2011-08-23T22:31:38.180 に答える
1

まず、uが単一のファイルで作業している場合、foreach(($ _FILES ['images'] ['name'] as $ image))は必要ないため、質問は具体的ではありません。 、これはケース4エラーをトリガーするはずです。つまり、ファイルはアップロードされていません。したがって、このように設定されたurエラーメソッドを使用します。

if($_FILES['upload']['error'] > 0){
echo 'the file couldnt be uploaded because';
 switch($_FILES['upload']['error']){
  case 1:
 print 'the file exceeds max size in php.ini';
 break;
 case 2:
  print 'the file exceeds max size in html settings';
 break;
  case 3:
 print 'the file was partially uploaded';
 break;
 case 4:
 print 'no file was uploaded';
 break;
 case 6:
 print 'no temporary folder available';
 break;
 case 7:
  print 'unable to write to disk';
 break;
 case 8:
print 'file upload stopped';
 break;
default:
print 'a sys error occured';
break;

これにより、エラーが通知され、空の画像がアップロードされたことがわかります。UNSET()のストレスを軽減します。マルチアップロードの場合は、次のようになります

foreach ($_FILES['upload']['name'] as $number => $filename)
于 2011-08-23T22:43:18.297 に答える
0

誰も答えないことに加えてtypetmp_namesizeなどの配列から要素を取り除きたい場合は、次を使用します。

// Before stripping
print_r($_FILES);

$length = count($_FILES['images']['name']);
for($i = 0; $i < $length; $i++){
    if(empty($_FILES['images']['name'][$i]))
        foreach($_FILES['images'] as $key => $value)
        unset($_FILES['images'][$key][$i]);
}

// After stripping
print_r($_FILES);
于 2011-08-23T22:32:21.743 に答える
0

エラーコードを使用するのが最善です

foreach( $_FILES['images']['error'] as $key => $value ) {

    if($value==0) { 
      // file good do code
    } else { 
    unset( $_FILES['images']['name'][$key] );
    }

    }
于 2011-08-23T22:49:17.500 に答える