使用各种属性从 $_FILES 中检索值,并存储到各种变量


Retrieve value from $_FILES with various attribute and store to various variable

所以我有 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获取扩展数组