这可能是一个愚蠢的问题,但PHPs数组$ _FILES有非常奇怪的格式,我以前从未使用过.有人能告诉我怎样才能以理智的方式迭代这个数组?我曾经习惯迭代对象或类似数组的对象,但这种格式对我来说非常奇怪.有没有办法像对象数组一样迭代这个数组?
( [attachments] =>
Array (
[name] => Array (
[0] => test1.png
[1] => test2.png
)
[type] => Array (
[0] => image/png
[1] => image/png
)
[tmp_name] => Array (
[0] => /tmp/phpmFkEUe
[1] => /tmp/phpbLtZRw
)
[error] => Array (
[0] => 0
[1] => 0
)
[size] => Array (
[0] => 9855
[1] => 3002
)
)
)
Run Code Online (Sandbox Code Playgroud)
And*_*ong 12
哇,这确实很奇怪,你<input type="file" name="attachments[]" />在你的标记中使用了吗?如果你有能力改变使用独特的那些name=,你就不会有那种奇怪的格式......
要直接回答您的问题,请尝试:
$len = count($_FILES['attachments']['name']);
for($i = 0; $i < $len; $i++) {
$fileSize = $_FILES['attachments']['size'][$i];
// change size to whatever key you need - error, tmp_name etc
}
Run Code Online (Sandbox Code Playgroud)
我一直认为这种结构是胡说八道。因此,每当我使用多个输入文件字段时,我都会这样做:
$files = array_map('RemapFilesArray'
(array) $_FILES['attachments']['name'],
(array) $_FILES['attachments']['type'],
(array) $_FILES['attachments']['tmp_name'],
(array) $_FILES['attachments']['error'],
(array) $_FILES['attachments']['size']
);
function RemapFilesArray($name, $type, $tmp_name, $error, $size)
{
return array(
'name' => $name,
'type' => $type,
'tmp_name' => $tmp_name,
'error' => $error,
'size' => $size,
);
}
Run Code Online (Sandbox Code Playgroud)
然后,您将拥有一个可以迭代的数组,并且其中的每个项目都将是一个结构的关联数组,该结构与普通的单个文件输入所具有的结构相同。因此,如果您已经具有处理这些功能的功能,则只需将每个项目传递给它,就不需要进行任何修改。
顺便说一句,将所有输入转换为数组的原因是,即使您忘记[]在文件输入的名称上输入,也可以使用该方法(当然,在这种情况下,您只会得到一个文件,但这总比打断它更好。 )。
| 归档时间: |
|
| 查看次数: |
14893 次 |
| 最近记录: |