2013-06-15 3 views
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) 

Если это не возможно, чтобы получить это как массив, я хотел бы, чтобы это было, как бы я поймать, например, tmp_name который является третьим массивом? (Без необходимости создавать несколько петель foreach)

+0

попытаться 'print_r ($ ключ)' а и вы будете поражены;) – OneOfOne

+0

Я знаю, что это возвращает имена, но как я могу поймать их в foreach? Как $ oneImage ['tmp_name'] –

+0

Что означает '' 'print_r ($ _ FILES)' '' return? – mat

ответ

1

При загрузке массива файлов возвращенный массив немного странный в своей структуре, а не самый интуитивный, на мой взгляд.

Мое решение использовать для цикла, а не Еогеасп

Мой 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'); 
    } 
} 
+0

Wow умное мышление! Большое спасибо, я бы не подумал об этом годами. –

+1

@Xegano Нет проблем :) – Dale