所以我有 7 个输入文件,我想使用 PHP 中的 $_FILES
检索每个值。以下是代码:
$fig1 = $_FILES['files1']['name'];
$fig2 = $_FILES['files2']['name'];
$fig3 = $_FILES['files3']['name'];
$fig4 = $_FILES['files4']['name'];
$fig5 = $_FILES['files5']['name'];
$fig6 = $_FILES['files6']['name'];
$fig7 = $_FILES['files7']['name'];
但我认为这不是一个有效的方法。
此外,我想分解名称以获取文件的扩展名,如下所示:
$value_fig1 = explode('.', $fig1);
$file_ext_fig = strtolower(array_pop($value_fig1));
我还有 6 个变量。
那么,有没有更有效的方法呢?
你可以做这样的事情:
$i = 0;
foreach($_FILES as $file)
{
$tmp = explode('.', $file['name']);
${'file_ext_fig'.++$i} = strtolower(array_pop($tmp));
${'file_name_fig'.$i} = implode('.', $tmp);
}
现在你有像这样的变量:$file_ext_fig1
、$file_name_fig1
、$file_ext_fig2
、$file_name_fig2
等...
顺便说一句,我必须告诉您,您不应该使用此方法来确定文件扩展名。正如这里所说: https://stackoverflow.com/a/10368236/3799829 你应该执行以下操作
$i = 0;
foreach($_FILES as $file)
{
${'file_ext_fig'.++$i} = pathinfo($file['name'], PATHINFO_EXTENSION);
${'file_name_fig'.$i} = pathinfo($file['name'], PATHINFO_FILENAME);
}
顺便说一下,你会看到我正在使用++$i
,如果这让你感到不安,你可以做这样的事情:
$i = 0;
foreach($_FILES as $file)
{
$i++;
${'file_ext_fig'.$i} = pathinfo($file['name'], PATHINFO_EXTENSION);
${'file_name_fig'.$i} = pathinfo($file['name'], PATHINFO_FILENAME);
}
它的作用完全相同
如果要筛选要使用的文件字段,让我们执行以下操作
// the fields you want to process
$filter = array(
'fig1_field_name',
'fig2_field_name',
'fig3_field_name',
'fig4_field_name',
'fig5_field_name',
);
$i = 0;
foreach($_FILES as $key => $file)
{
if(!in_array($key, $filter)) continue;
$i++;
${'file_ext_fig'.$i} = pathinfo($file['name'], PATHINFO_EXTENSION);
${'file_name_fig'.$i} = pathinfo($file['name'], PATHINFO_FILENAME);
}
使用这个
$ext = array();
foreach($_FILES as $key=>$val)
{
$value_fig = explode('.', $_FILES[$key]['name']);
$ext [] = strtolower(array_pop($value_fig));
}
$ext获取扩展数组