6

重複の可能性:
$_FILES 配列をどのようにループしますか?

何らかの理由で、配列は本当に私に届きます。最終的にそこにたどり着くことができますが、この $_FILES 配列は私には逆向きのようです。

次のように $_FILES をループできるようにしたい:

foreach($_FILES as $file)
{
   echo $file['name'] . "<br>";
   echo $file['type'] . "<br>";
   echo $file['size'] . "<br>";
   echo $file['error'] . "<br>";
}

しかし、明らかにその構造化された方法では、それを行うことはできません。だから私は次のように書いています:

echo "<pre>";
                $x=0;
                $file = array();
                foreach($_FILES['attachment']['name'] as $data)
                {   $file[$x]=array(); 
                    array_push($file[$x],$data); $x++;
                }
                $x=0;
                foreach($_FILES['attachment']['type'] as $data)
                    {   array_push($file[$x],$data); $x++;}

                $x=0;
                foreach($_FILES['attachment']['tmp_name'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                $x=0;
                foreach($_FILES['attachment']['error'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                $x=0;
                foreach($_FILES['attachment']['size'] as $data)
                    {   array_push($file[$x],$data); $x++;}
                var_dump($file);
                echo "</pre>";

これは非常に長くてばかげているように思えますが、この配列のさまざまな部分を適切にループして機能させ、希望どおりにループさせる方法について、私の心は今のところ行き詰まっています。

もっと良い方法があるはずですか?

助けてください!

4

2 に答える 2

6

それらがすべて同じ長さの場合、次のようにすることができます

for($i = 0; $i < count($_FILES['attachment']['name']); $i++)
{
   echo $_FILES['attachment']['name'][$i] . "<br>";
   echo $_FILES['attachment']['type'][$i] . "<br>";
   echo $_FILES['attachment']['size'][$i] . "<br>";
   echo $_FILES['attachment']['error'][$i] . "<br>";

}
于 2012-07-27T15:09:57.013 に答える
3

あなたのコードから、あなたの<form>入力は次のようになっていると思います:

<input type="file" name="attachment[]">
<input type="file" name="attachment[]">

ファイル フィールドに一意の名前を付けると、必要$_FILESな構造が得られるはずです。

<input type="file" name="attachment0">
<input type="file" name="attachment1">

結果は次のようになります。

配列(2) {
  'attachment0' => 配列(5) {
    '名前' => 文字列(8) "1528.jpg"
    'タイプ' => 文字列(0) ""
    'tmp_name' => 文字列(0) ""
    'エラー' => int(2)
    'サイズ' => int(0)
  }
  'attachment1' => 配列(5) {
    '名前' => 文字列(8) "1529.jpg"
    'タイプ' => 文字列(0) ""
    'tmp_name' => 文字列(0) ""
    'エラー' => int(2)
    'サイズ' => int(0)
  }
}
于 2012-07-27T15:13:28.343 に答える