Это было неудачное дизайнерское решение, и сейчас уже слишком поздно его менять, слишком много кода, который полагается на это точное поведение.
Однако ничто не мешает вам определить этот тип входных данных и переписать его в удобную для вас форму.
<?php
$in = array();
$in['name'] = array('name1', 'name2', 'name3');
$in['tmp_name'] = array('tmpname1', 'tmpname2', 'tmpname3');
$files = array();
// remap input data into desired format
foreach (array_keys($in) as $field) {
foreach ($in[$field] as $index => $item) {
$files[$index][$field] = $item;
}
}
print_r($in);
print_r($files);
Если вы запустите его, вы получите следующий результат.
[~]> php test.php
Array
(
[name] => Array
(
[0] => name1
[1] => name2
[2] => name3
)
[tmp_name] => Array
(
[0] => tmpname1
[1] => tmpname2
[2] => tmpname3
)
)
Array
(
[0] => Array
(
[name] => name1
[tmp_name] => tmpname1
)
[1] => Array
(
[name] => name2
[tmp_name] => tmpname2
)
[2] => Array
(
[name] => name3
[tmp_name] => tmpname3
)
)
Замените $ in на $ _FILES, и все готово. В качестве дополнительного трюка код «переназначения» работает для всех массивов с аналогичной структурой, как $ _FILES