使用值操作从数组创建数组

时间:2012-09-19 17:20:21

标签: php arrays

我有一个文本区域,其中同事输入没有扩展名的文件名,然后返回。我的代码获取此输入列表并创建一个名为$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);

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分: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);
    }
}

将以您描述的方式生成数组。