2012-09-19 43 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