为什么php组$ _FILES值按名称,类型而不是输入字段名的顺序?

时间:2017-12-08 05:34:56

标签: php file

当我上传文件数组时,我得到以下数组。

array(1) { 
    ["upload"]=>array(2) { 
        ["name"]=>array(2) { 
            [0]=>string(9)"file0.txt" 
            [1]=>string(9)"file1.txt" 
        } 
        ["type"]=>array(2) { 
            [0]=>string(10)"text/plain" 
            [1]=>string(10)"text/html" 
        } 
        ...
    } 
} 

以上格式而不是以下格式收到的数组背后的原因(技术原因或任何好处)是什么?

array(1) { 
    ["upload"]=>array(2) { 
        [0]=>array(2) { 
            ["name"]=>string(9)"file0.txt" 
            ["type"]=>string(10)"text/plain" 
            ...
        }, 
        [1]=>array(2) { 
            ["name"]=>string(9)"file1.txt" 
            ["type"]=>string(10)"text/html" 
            ...
        } 
    } 
} 

1 个答案:

答案 0 :(得分:3)

我认为这是$ _FILES如何提供数组的基本方法,如果你想将它转换为你指定的格式,我发现代码形式为link

使用输入名称作为数组时重新排序$ _FILES数组的一个很好的技巧是:

<?php 
    function diverse_array($vector) { 
        $result = array(); 
        foreach($vector as $key1 => $value1) 
            foreach($value1 as $key2 => $value2) 
                $result[$key2][$key1] = $value2; 
                return $result; 
    } 
?> 

会改变这个:

array(1) { 
    ["upload"]=>array(2) { 
        ["name"]=>array(2) { 
            [0]=>string(9)"file0.txt" 
            [1]=>string(9)"file1.txt" 
        } 
        ["type"]=>array(2) { 
            [0]=>string(10)"text/plain" 
            [1]=>string(10)"text/html" 
        } 
    } 
} 

进入:

array(1) { 
    ["upload"]=>array(2) { 
        [0]=>array(2) { 
            ["name"]=>string(9)"file0.txt" 
            ["type"]=>string(10)"text/plain" 
        }, 
        [1]=>array(2) { 
            ["name"]=>string(9)"file1.txt" 
            ["type"]=>string(10)"text/html" 
        } 
    } 
} 

只是这样做:

<?php $upload = diverse_array($_FILES["upload"]); ?>