3

このようにファイルの配列をphpに送信しています

<input type="file" name="image_name[]" />

しかし、たとえば 2 つのファイルを要求し、それを foreach すると、返されるファイル情報を含む 2 つの配列ではなく、各配列のファイル仕様で 5 つの情報の配列が満たされました。

Foreach ループ:

foreach($image as $key => $oneImage){
    print_r($oneImage);
    echo "<br />";
}

出力:

Array ( [0] => 3.jpg [1] => 5585_387497301371274_1740842451_n.png ) 
Array ( [0] => image/jpeg [1] => image/png ) 
Array ( [0] => /tmp/php8lgHOu [1] => /tmp/phpJOpJye ) 
Array ( [0] => 0 [1] => 0 ) 
Array ( [0] => 56405 [1] => 504664 ) 

これを希望する配列として取得できない場合、たとえば 3 番目の配列である tmp_name をどのようにキャッチしますか? (複数の foreach ループを作成する必要なし)

4

1 に答える 1

1

ファイルの配列をアップロードすると、返される配列の構造は少し奇妙で、私の意見では最も直感的ではありません。

私の解決策は、foreach ではなく for ループを使用することです

私のHTML:

<input type="file" name="image_name[]" />
<input type="file" name="image_name[]" />
<input type="file" name="image_name[]" />

私のPHP:

<?php
$count = count($_FILES['image_name']['error']);
for ($i = 0; $i < $count; $i++)
{
    // image handling code here
    if ($_FILES['image_name']['error'][$i] ==  0)
    {
        move_uploaded_file($_FILES['image_name']['tmp_name'][$i], 'whatever.jpg');
    }
}
于 2013-06-15T19:55:49.097 に答える