2016-04-26 76 views
0

因此,我有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个变量。

那么,有没有更有效率的方法?

+1

听说过for for循环 – Ghost

+0

我这么认为。但我该怎么做? –

回答

0

你可以做这样的事情:

$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); 
} 
+0

Thankyou @ Bob0t其实我在同一页面上有另一个文件输入,我不希望被包含在这个过程中。那么我可以使用输入表单的名称来定义$ _FILES吗? –

+0

当然,我正在编辑我的文章,使其成为 – Bobot

0

使用本

$ext = array(); 
foreach($_FILES as $key=>$val) 
{ 
$value_fig  = explode('.', $_FILES[$key]['name']); 
$ext [] = strtolower(array_pop($value_fig)); 
} 

$内线得到扩展的阵列