let*_*ngo 4 php multidimensional-array
我有以下$_FILES数组从支持表单处理过来
Array
(
[file] => Array
(
[name] => Array
(
[0] => Test.jpg
[1] => Test.doc
[2] => Test.php
[3] =>
)
[type] => Array
(
[0] => image/jpeg
[1] => image/jpeg
[2] => image/jpeg
[3] =>
)
[tmp_name] => Array
(
[0] => /tmp/phpCO0vSD
[1] => /tmp/phpEFpp3Q
[2] => /tmp/phpwN4Iwc
[3] =>
)
[error] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 4
)
[size] => Array
(
[0] => 1305787
[1] => 339773
[2] => 480098
[3] => 0
)
)
)
Run Code Online (Sandbox Code Playgroud)
我的主要问题是理解处理数组所需的逻辑,检查每个文件是否有效(我已经有一个有效扩展列表)然后重新命名并妥善存储文件.
对于我的简单要求,Google和SO上的解决方案都相当复杂.
以下是遍历数组的方法:
foreach ($_FILES['file']['name'] as $key => $name) {
echo $name;
echo $_FILES['file']['type'][$key];
echo $_FILES['file']['tmp_name'][$key];
}
Run Code Online (Sandbox Code Playgroud)
有了这个循环,你可以轻松地做你想做的事.
我foreach()非常喜欢,我总是这样...
$files = array();
foreach ($_FILES['files']['name'] as $num_key => $dummy) {
foreach ($_FILES['files'] as $txt_key => $dummy) {
$files[$num_key][$txt_key] = $_FILES['files'][$txt_key][$num_key];
}
}
Run Code Online (Sandbox Code Playgroud)
...然后我foreach($files as $file)再次使用来很好地处理数据.:)
当然,来自zerkms的答案更快,但这对于任何情况重新排序数组逻辑都是一般的方法 - 你必须走两次(x*y).