获取$ _FILES数组的键

时间:2016-01-19 14:34:32

标签: php

在表单提交后,有没有办法获取名为upload []的文件上传输入字段的键?

    <input type="file" name="upload[3]" />
    <input type="file" name="upload[7]" />
    <input type="file" name="upload[10]" />

3 个答案:

答案 0 :(得分:7)

array_keys会为您提供所有密钥。

$keys = array_keys($_FILES["upload"]);

答案 1 :(得分:2)

使用$_FILES["upload"]获取密钥。 更多information

<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="upload[3]" />
    <input type="file" name="upload[7]" />
    <input type="file" name="upload[10]" />
    <input type="submit" />
</form>
    <?php
    echo "<pre>"; print_r($_FILES['upload']);
}
?>

输出

Array
(
    [name] => Array
        (
            [3] => Chrysanthemum.jpg
            [7] => 
            [10] => 
        )

    [type] => Array
        (
            [3] => image/jpeg
            [7] => 
            [10] => 
        )

    [tmp_name] => Array
        (
            [3] => D:\xampp\tmp\phpD249.tmp
            [7] => 
            [10] => 
        )

    [error] => Array
        (
            [3] => 0
            [7] => 4
            [10] => 4
        )

    [size] => Array
        (
            [3] => 879394
            [7] => 0
            [10] => 0
        )

)

答案 2 :(得分:2)

由于您正在使用数组命名黑客,请注意$ _FILES是以令人难以置信的方式构建的,您将获得此结构:

$_FILES = array(
   'upload' => 
        'name' => array(
           '3' => 'name of file #3',
           '7' => 'name of file #7', 
           etc...
        ),
        'type' => array(
           '3' => 'mime type of file #3',
           etc...
       etc..
    );

要检索3,7等密钥,您需要array_keys($_FILES['upload'])

不知道PHP开发者当天吸烟的是什么,但$_FILES['upload'][3]['name'] 应该是结构...所有文件的数据都在单个子阵列,不分布在6个不同的阵列中。