2016-04-26 74 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)); 
} 

$內線得到擴展的陣列