Here is a function that does this and works with name attributes like:
name="artist[images][]" name="images[]" name="image"
Also works with multiple file fields:
<input type="file" name="artist[images][]" multiple> <input type="file" name="artist[logos][]" multiple>
PHP:
function get_files( $array ) { $output = array(); foreach ( $array as $base_key => $file ) { if ( is_array($file['name']) ) { $file_keys = array_keys( $file['name'] ); foreach ( $file_keys as $file_key ) { if ( is_array( $file['name'][$file_key] ) ) { $keys = array_keys( $file['name'][$file_key] ); foreach ( $keys as $key ) { $output[$base_key][$file_key][$key] = array ( 'name' => $file['name'][$file_key][$key], 'type' => $file['type'][$file_key][$key], 'tmp_name' => $file['tmp_name'][$file_key][$key], 'error' => $file['error'][$file_key][$key], 'size' => $file['size'][$file_key][$key] ); } } else $output[$base_key][$file_key] = array( 'name' => $file['name'][$file_key], 'type' => $file['type'][$file_key], 'tmp_name' => $file['tmp_name'][$file_key], 'error' => $file['error'][$file_key], 'size' => $file['size'][$file_key] ); } } else $output[$base_key] = $file; } return $output; }
source share