Вот более общее решение для ответа seoguru .Он работает с полями ввода файлов, имя которых содержит любой уровень вложенных массивов, например file
, file[]
(случай для этого вопроса), file[english]
, file[english][]
и т. Д.
function rearrangeUploadArray(array $array) {
if(!is_array(reset($array)))
return $array;
$rearranged = [];
foreach($array as $property => $values)
foreach($values as $key => $value)
$rearranged[$key][$property] = $value;
foreach($rearranged as &$value)
$value = rearrangeUploadArray($value);
return $rearranged;
}
Я понимаю, что этот ответ является более сложным, чем он должен быть для этого вопроса, но, возможно, он может быть полезным для кого-то когда-нибудь.Примером использования является локализованная форма загрузки, где несколько файлов могут быть загружены для разных языков.Тогда имеет смысл иметь одно поле для ввода файла для каждого языка, например, с именами file[english][]
, file[german][]
, file[spanish][]
и т. Д. rearrangeUploadArray($_FILES['file'])
будет возвращать массив в форме
Array
(
[english] => Array
(
[0] => Array
(
[name] => ...
[type] => ...
[tmp_name] => ...
[error] => ...
[size] => ...
)
[1] => Array
(
[name] => ...
[type] => ...
[tmp_name] => ...
[error] => ...
[size] => ...
)
[...]
)
[german] => Array
(
[0] => Array
(
[name] => ...
[type] => ...
[tmp_name] => ...
[error] => ...
[size] => ...
)
[...]
)
[spanish] => Array
(
[0] => Array
(
[name] => ...
[type] => ...
[tmp_name] => ...
[error] => ...
[size] => ...
)
[...]
)
)