3
在工作中,我一直在处理一些包含多个图像上传字段的复杂表单(发布页面为Symphony)。我需要一种快速合并$_FILES
和$_POST
的方法,遗憾的是,您不能简单地将这两个合并为array_merge
,因为它们不遵循相同的结构。合并PHP中的文件和发布数据
基本上如果你有$_POST[a][b]
它将是$_FILES[a][*][b]
。将*
替换为name
,type
,tmp_name
,error
或size
之一。
的$_FILES
阵列作为标准的内容:
array
'image-a' => array
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
'image-b' => array
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
'image' => array
'name' => array
'sub' => array
'c' => string '' (length=0)
'type' => array
'sub' => array
'c' => string '' (length=0)
'tmp_name' => array
'sub' => array
'c' => string '' (length=0)
'error' => array
'sub' => array
'c' => int 4
'size' => array
'sub' => array
'c' => int 0
和所需的阵列$_POST
合并后:
array
'MAX_FILE_SIZE' => string '5242880' (length=7)
'image-a' => array
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
'image-b' => array
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
'image' => array
'sub' => array
'c' => array
'name' => string '' (length=0)
'type' => string '' (length=0)
'tmp_name' => string '' (length=0)
'error' => int 4
'size' => int 0
那么它应该是通讯unity wiki ... – ariefbayu 2009-09-03 05:26:55
gnarf,由于历史原因,$ _FILES'具有不同于'$ _POST'的结构。 – 2009-09-03 06:29:44
哦,等待 - 从不知道 - 我看到了你现在引用的区别.. $ _FILES的Hierarcial模式很奇怪......删除我之前的注释,并在你的示例中添加一个var_dump的$ _FILES数组。 – gnarf 2009-09-03 06:41:34