我想从$_FILES捕获扫描,因为总是会传递一个空的扫描输入名,而其他的变量可能会改变,我需要得到$_FILES的名称和数字。你有什么建议如何做到这一点吗?
// Skipping the empty scan, and getting the 0-100 possible
$results = preg_grep('/^scan\d{1,2}$/', $_FILES);生成数组到字符串转换错误
邮政转储
["scan0"]=>
array(5) {
["name"]=>
string(6) "2.jpeg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(24) "C:\xampp\tmp\phpD7B4.tmp"
["error"]=>
int(0)
["size"]=>
int(24618)
}
["scan1"]=>
array(5) {
["name"]=>
string(6) "2.jpeg"
["type"]=>
string(10) "image/jpeg"
["tmp_name"]=>
string(24) "C:\xampp\tmp\phpD7B5.tmp"
["error"]=>
int(0)
["size"]=>
int(24618)
}
["scan"]=>
array(5) {
["name"]=>
string(0) ""
["type"]=>
string(0) ""
["tmp_name"]=>
string(0) ""
["error"]=>
int(4)
["size"]=>
int(0)
}发布于 2016-03-02 15:09:39
$scankeys = [];
foreach($scans as $key => $scan)
{
if(preg_match("/^scan[0-9]{1,2}$/", $key)){
$scankeys[] = $key;
}
}我应该指出,这比尝试组合多个数组操作函数以获得相同的结果要好。
发布于 2016-03-02 14:44:14
请注意,带有标志的array_filter只适用于PHPVersionPHP5.6
$scans = array_filter($_FILES, function ($key, $scan) {
return $key != 'otherscan' && !empty($scan['name']);
}, ARRAY_FILTER_USE_BOTH);
$names = array_combine(
array_keys($scans),
array_map(function ($scan) {
return $scan['size'];
}, $scans)
);
var_dump($names);https://stackoverflow.com/questions/35750086
复制相似问题