2012-09-19 38 views
0

我有一個文本區域,其中同事輸入沒有擴展名的文件名,然後返回。我的代碼需要這個輸入列表並創建一個名爲$list的數組。那麼它會採取陣列和創建更新的陣列稱爲$genList有額外的文件名是這樣的:從具有值操作的數組中創建數組

$fileString = $_POST['fileList']; 
$unique = $_POST['unique']; 
$size = $_POST['size']; 
$generateArray = $_POST['generateArray']; 

$list = explode("\r\n",$fileString); 

if ($generateArray == "yes") { 
    if ($size == "5x7inimpos") { 
     $genList = array(); 
     foreach($list as $element) { 
      array_push($genList, $element . "_f", $element . "_b", $element . "_i"); 
     } 
    }   
    $list = array(); 
    $list = $genList;   
} 

所以因爲它的立場,如果一個工人輸入某些文件的名字,像這樣:

HOL_12_001_00 
HOL_12_002_00 
HOL_12_003_00 

它最終將被轉換爲對文件名的像這樣結束擴展的陣列:

$list = array(HOL_12_001_00_f, HOL_12_001_00_b, HOL_12_001_00_i, HOL_12_002_00_f, HOL_12_002_00_b, HOL_12_002_00_i, HOL_12_003_00_f, HOL_12_003_00_b, HOL_12_003_00_i); 

但我真正需要做的是有最終陣列(與_f_b_i)這樣的文件名中:

$list = array(HOL_12_f_001_00, HOL_12_b_001_00, HOL_12_i_001_00, HOL_12_f_002_00, HOL_12_b_002_00, HOL_12_i_002_00, HOL_12_f_003_00, HOL_12_b_003_00, HOL_12_i_003_00); 

我怎樣才能做到這一點?

+0

是否修復了文件名的命名約定?或文件名可以是任何名稱? – GBD

回答

3

替換您如下代碼:

foreach($list as $element) { 
    array_push($genList, $element . "_f", $element . "_b", $element . "_i"); 
} 

這一個:

$letter = array('f','b','i'); 
foreach($list as $element) { 
    for ($i=0;$i<3;$i++) { 
     $arr = explode('_', $element); 
     $arr[1] .= '_' . $letter[$i]; 
     $genList[] = implode('_', $arr); 
    } 
} 

,將產生在您所描述的方式排列。

+0

謝謝!它確實有效,但我不知道你指定在正確的位置輸入字母的方式/位置。你可以解釋嗎? – thindery

+0

訣竅是explode()和implode()函數,請在http://www.php.net上閱讀它們。 – Nelson