Php 如何循环遍历$\u文件数组的多维数组
我正在使用dropzone将文件上载到我的文件夹。已成功获取文件数组Php 如何循环遍历$\u文件数组的多维数组,php,arrays,Php,Arrays,我正在使用dropzone将文件上载到我的文件夹。已成功获取文件数组 foreach($_FILES as $file) { print_r($file); } 电流输出: Array ( [name] => Array ( [0] => Image.PNG [1] => sadssadsa.PNG ) [type] => Array
foreach($_FILES as $file) {
print_r($file);
}
电流输出:
Array
(
[name] => Array
(
[0] => Image.PNG
[1] => sadssadsa.PNG
)
[type] => Array
(
[0] => image/png
[1] => image/png
)
[tmp_name] => Array
(
[0] => C:\Users\CH MANAN\AppData\Local\Temp\php48B6.tmp
[1] => C:\Users\CH MANAN\AppData\Local\Temp\php48B7.tmp
)
[error] => Array
(
[0] => 0
[1] => 0
)
[size] => Array
(
[0] => 291647
[1] => 112790
)
)
预期产出:
array
(
[0] => array
(
[name] => Image.PNG
[type] => image/png
[tmp_name] => C:\Users\CH MANAN\AppData\Local\Temp\php48B6.tmp
[error] => 0
[size] => 291647
)
[1] => array
(
[name] => sadssadsa.PNG
[type] => image/png
[tmp_name] => C:\Users\CH MANAN\AppData\Local\Temp\php48B7.tmp
[error] => 0
[size] => 112790
)
)
在父循环中尝试了各种循环,但未获得预期结果。有人可以在这里提供帮助。您看到的
$\u文件的输出是一个标准输出,用于上载多个文件。您可以迭代$\u文件的一个子数组(例如名称
),并从同一关键字下的其他子数组中获取值:
foreach ($_FILES['name'] as $key => $value) {
echo $value, $_FILES['error'][$key], $_FILES['tmp_name'][$key]; // etc
}
看看这个例子:
$source = [
'name' => [
'test1',
'test2'
],
'type' => [
'jpg',
'png'
]
];
$result = [];
foreach ($source as $key => $subArray) {
foreach ($subArray as $index => $value) {
if (!array_key_exists($index, $result)) {
$result[$index] = [];
}
$result[$index][$key] = $value;
}
}
var_dump($result);
它首先查看(文件)索引。如果$result
中不存在索引,则将添加该索引。然后将带有值的键添加到相应的索引中
在前进之前,您应该先学习基础知识(操作多维数组等)。您是否有教程或其他学习内容?您可以循环数组,并使用array\u combine和array\u column变换数组
foreach($_FILES as $file) {
$keys = array_keys($file);
foreach($file['name'] as $key => $f){
$new[] = array_combine($keys, array_column($file, $key));
}
}
var_dump($new);
参见工作示例:
您可以使用以下功能:
$keys = array_keys($_FILES); // get all the fields name
$res = array_map(null, ...array_values($_FILES)); // group the array by each file
$res = array_map(function ($e) use ($keys) {return array_combine($keys, $e);}, $res); // insert the field name to result array
文件:
,及
实例:那么重建阵列有什么问题?顺便说一句,这是多个上传文件的标准$\u文件。@u\u mulder我不知道如何构建该数组。这就是问题所在。我在内部尝试了各种循环,但没有得到预期的输出。举个例子可能会有所帮助。看看这个:带有print_r输出的循环是否输出了您当前的输出?@Andreas yes这是带有print_raray_combine()的循环:两个参数的元素数应该相等设置数组(5){[“name”]=>bool(false)[“type”]=>bool(false)[“tmp_name”]=>bool(false)[“error”]=>bool(false)[“size”]=>bool(false)}
您从$res=array_map(null,$_文件);
?(可能我错过了$_文件结构)array(5){[“name”]=>array(2){[0]=>string(13)“sadsadsa.PNG”[1]=>string(8)“SLIP.PNG”[“type”=>array(2){[0]=>string(9)“image/png”[1]=>string(9)“image/png”}[“tmp_name”]=>array(2){[0]=>string(47)“C:\Users\CH MANAN\AppData\Local\Temp\php5BC.tmp”[1]=>string(47)“C:\Users\CH MANAN\AppData\Local\Temp\php5CC.tmp”}[“error”]=>array(2){[0]=>int(0)[1]=>int(0)}“size”]=>数组(2){[0]=>int(112790)[1]=>int(112968)}
@MR_AMDEV的问题是缺少数组值
-当您看到我的预期输出需要一个数组,并且键应该有值而不是数组时进行了更新。@MR_AMDEV他们完全一样!看看这个,现在我使用print\r。它看起来更好吗?@MR_AMDEV和接受的答案相反,我没有创建通知和警告谢谢。只是忽略了代码,意识到它是输出。