многомерный для циклов в php

У меня есть следующий print_r, который получен из «множественных (не опечатанных) файлов».

Array ( [file] => Array ( [name] => Array ( [1] => Array ( [0] => IMG_8502 f 5 .jpg [1] => IMG_8507 f 5 .jpg ) [2] => Array ( [0] => IMG_8508 f 5 .jpg [1] => IMG_8529 f 5 .jpg [2] => IMG_8612 fff 5 .jpg ) [3] => Array ( [0] => IMG_8502 f 5 .jpg [1] => IMG_8507 f 5 .jpg ) ) [type] => Array ( [1] => Array ( [0] => image/jpeg [1] => image/jpeg ) [2] => Array ( [0] => image/jpeg [1] => image/jpeg [2] => image/jpeg ) [3] => Array ( [0] => image/jpeg [1] => image/jpeg ) ) [tmp_name] => Array ( [1] => Array ( [0] => C:\wamp\tmp\php1CC.tmp [1] => C:\wamp\tmp\php1FC.tmp ) [2] => Array ( [0] => C:\wamp\tmp\php23B.tmp [1] => C:\wamp\tmp\php26B.tmp [2] => C:\wamp\tmp\php2AB.tmp ) [3] => Array ( [0] => C:\wamp\tmp\php2CB.tmp [1] => C:\wamp\tmp\php30A.tmp ) ) [error] => Array ( [1] => Array ( [0] => 0 [1] => 0 ) [2] => Array ( [0] => 0 [1] => 0 [2] => 0 ) [3] => Array ( [0] => 0 [1] => 0 ) ) [size] => Array ( [1] => Array ( [0] => 2776165 [1] => 2380025 ) [2] => Array ( [0] => 2456713 [1] => 2585779 [2] => 1770128 ) [3] => Array ( [0] => 2776165 [1] => 2380025 ) ) ) 

)

 <?php if(isset($_FILES['file'])=== true){ $files = $_FILES['file']; for($x = 0; $x < count($files['name'][$x]); $x++){ $file_name = $files['name'][$x]; $tmp_name = $files['tmp_name'][$x]; move_uploaded_file($tmp_name, 'documents/'.$file_name); }}?> 

Я думаю, мне нужно встроить еще один цикл для доступа к фактическому имени и tmp-массивам … name1, name2, name3. Я хотел бы иметь доступ к каждому вспомогательному массиву, чтобы я мог перемещать их соответственно

Я использую что-то вроде этого, попробуйте;

 function assoc($files) { // single image if (!is_array($files['name'])) { return $files; } // multiple images $assoc = array(); foreach ($files as $key => $array) { foreach ($array as $i => $value) { $assoc[$i][$key] = $value; } } return $assoc; } echo '<form method="post" action="" enctype="multipart/form-data"> File 1: <input type="file" name="file[]"> File 2: <input type="file" name="file[]"> <input type="submit" name="submit" value="Send"> </form>'; // and using if (isset($_FILES['file'])) { $files = assoc($_FILES['file']); foreach ($files as $i => $file) { $move =@ move_uploaded_file($file['tmp_name'], 'documents/'. $file['name']); if ($move === true) { // remove moved file from array stack unset($files[$i]); } } } // display not moved files print_r($files); // flash errors if (!empty($files)) { foreach ($files as $file) { print $file['name'] ." not uploaded!\n"; } } не function assoc($files) { // single image if (!is_array($files['name'])) { return $files; } // multiple images $assoc = array(); foreach ($files as $key => $array) { foreach ($array as $i => $value) { $assoc[$i][$key] = $value; } } return $assoc; } echo '<form method="post" action="" enctype="multipart/form-data"> File 1: <input type="file" name="file[]"> File 2: <input type="file" name="file[]"> <input type="submit" name="submit" value="Send"> </form>'; // and using if (isset($_FILES['file'])) { $files = assoc($_FILES['file']); foreach ($files as $i => $file) { $move =@ move_uploaded_file($file['tmp_name'], 'documents/'. $file['name']); if ($move === true) { // remove moved file from array stack unset($files[$i]); } } } // display not moved files print_r($files); // flash errors if (!empty($files)) { foreach ($files as $file) { print $file['name'] ." not uploaded!\n"; } } 

Ушли;

 // print_r ($ _ FILES);
 // print_r (assoc ($ _ FILES ['file']));
 массив
 (
     [файл] => Массив
         (
             [name] => Массив
                 (
                     [0] => Бабочка-обои-бабочки-604274_1024_768.jpg
                     [1] => winter-wallpaper-by_karil.png
                 )

             [type] => Array
                 (
                     [0] => image / jpeg
                     [1] => image / png
                 )

 ...

 массив
 (
     [0] => Массив
         (
             [имя] => Бабочка-обои-бабочки-604274_1024_768.jpg
             [type] => image / jpeg
             [tmp_name] => C: \ Windows \ Temp \ php4C16.tmp
             [error] => 0
             [размер] => 212399
         )

     [1] => Массив
         (
             [name] => winter-wallpaper-by_karil.png
             [type] => image / png
             [tmp_name] => C: \ Windows \ Temp \ php4C36.tmp
             [error] => 0
             [size] => 146146
         )

 )

Я думаю, что лучший способ справиться с этим – реорганизовать код, который генерирует массив, так что связанные поля объединяются. Возможно, такая структура, как:

 Array ( [file] => Array ( [0] => Array ( [0] => Array ( [name] => IMG_8502 f 5 .jpg [type] => image/jpeg ) ... 

И тогда вы можете просто перебирать файлы:

 foreach($files as $upload) { foreach($upload as $file) { move_uploaded_file($file['tmp_name'], 'documents/'.$file['name']); } }