我有一个表单,其中的一些字段如下所示:
<input type="file" name="images[]" />
<input type="file" name="images[]" />
<input type="file" name="images[]" />
<input type="file" name="images[]" />我希望我会这样做:
Array
(
[images] => Array
(
[0] => Array
(
[name] => test.jpg
[type] => image/jpeg
[tmp_name] => /tmp/nsl54Gs
[error] => 0
[size] => 1715
)
[1] => Array
(
[name] => test.jpg
[type] => image/jpeg
[tmp_name] => /tmp/nsl54Gs
[error] => 0
[size] => 1715
)
[2] => Array
(
[name] => test.jpg
[type] => image/jpeg
[tmp_name] => /tmp/nsl54Gs
[error] => 0
[size] => 1715
)
[3] => Array
(
[name] => test.jpg
[type] => image/jpeg
[tmp_name] => /tmp/nsl54Gs
[error] => 0
[size] => 1715
)
)
)但我得到的东西是这样的:
Array
(
[images] => Array
(
[name] => Array
(
[0] => test.jpg
[1] => test.jpg
[2] => test.jpg
[3] => test.jpg
)
[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
[2] => image/jpeg
[3] => image/jpeg
)
[tmp_name] => Array
(
[0] => /tmp/nsl54Gs
[1] => /tmp/nsl54Gs
[2] => /tmp/nsl54Gs
[3] => /tmp/nsl54Gs
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[size] => Array
(
[0] => 1715
[1] => 1715
[2] => 1715
[3] => 1715
)
)
)如何以我期望的形式获得数组?
发布于 2011-01-27 23:32:56
这是完全正常的格式,它一直是这样的。如果你想要一个不同的结构,你可以在你的应用程序中转换它,如下所示:
<?php
$another_format = array();
for ($i=0; $i<count($_FILES['images']['name']); $i++){
$another_format[$i] = array(
'name' => $_FILES['images']['name'][$i],
'type' => $_FILES['images']['type'][$i],
'tmp_name' => $_FILES['images']['tmp_name'][$i],
'error' => $_FILES['images']['error'][$i],
'size' => $_FILES['images']['size'][$i]
);
}
?>祝好运!
发布于 2011-01-27 23:33:34
你不需要这样做,你可以很容易地使用这个结构:
foreach ($_FILES['images']['name'] as $key => $name) {
$type = $_FILES['images']['type'][$key];
$tmp_name = $_FILES['images']['tmp_name'][$key];
$error = $_FILES['images']['error'][$key];
$size = $_FILES['images']['size'][$key];
// Do your stuff
}发布于 2013-05-08 14:20:21
下面是一个函数,它可以做到这一点,并将name属性作为:
name="artist[images][]"
name="images[]"
name="image"也适用于多个文件字段:
<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;
}https://stackoverflow.com/questions/4818275
复制相似问题