关联数组的问题

时间:2011-09-16 08:04:20

标签: php arrays

我总是吮吸复杂的数组,我的大脑中肯定有东西阻止我理解它们。我将尝试使这个例子非常简单,所以我们不会偏离主题。我使用此代码使用数字来表示每个文件名:

$mod_nums = array('1' => $input_zip_path . '01_mod_1.0.2.zip',

                  '2' => $input_zip_path . '02_mod_1.0.1.zip',
);

因此,当我使用$ mod_nums ['01']时,它将显示该文件的路径。我有一个脚本中的数组,它将这些$ mod_nums值放入一个数组中,如下所示:

$files_to_zip = array(
    $mod_nums['1'],
    $mod_nums['2']
);

工作得很好。现在我想添加一个$ _POST值,这样我就可以输入像1,2和其他数字这样的数字,我之后会添加到$ mod_nums数组,例如1,3,6,12。所以我对那些发布的值使用了爆炸:

$explode_mods  = explode(",", trim($_POST['mods']));

现在是一个大问题,即绞尽脑汁并花费数小时而无法使其工作....我需要$ files_to_zip仍然在数组中并显示$ mod_nums的已发布值。所以它会像:

$files_to_zip = array( HAVE $_POSTED VALUES IN HERE );

我希望这是有道理的。我需要$ files_to_zip保持数组格式,从$ mod_nums数组中获取zip文件的文件路径,并正确显示它以便动态输出:

$ files_to_zip = array('01_mod_1.0.2.zip','02_mod_1.0.1.zip');

所以发布的数字将以$ files_to_zip变量的数组格式显示。合理?简而言之,我需要一个具有动态值的数组。谢谢:))

修改

当我多年前在类似的事情上工作时,我从记忆中发现了自己。这看起来很难但事实并非如此。我不得不使用foreach并将变量分配到一个数组中,如下所示:

$blah = array();

foreach ($explode_mods as $value)
{
    $blah[] = $mod_nums[$value];
}

然后我只是将$ files_to_zip分配给$ blah:

$files_to_zip = $blah;

完美运行:)我忘了如何动态地将值分配到数组中。

2 个答案:

答案 0 :(得分:0)

// filenames array
$mod_nums = array('1' => $input_zip_path . '01_mod_1.0.2.zip',
                  '2' => $input_zip_path . '02_mod_1.0.1.zip',
);

// mod_num keys
$explode_mods  = explode(',', trim($_POST['mods']));

// array to hold filenames
$files_to_zip = array();

// loop over all the mod_num keys submitted via POST
foreach($explode_mods as $key){
    // save the filename to the corresponding array
    $files_to_zip[] = $mod_nums[$key];
}

答案 1 :(得分:0)

也许我没有理解你的权利,但这不会只是一个简单的foreach循环来向$files_to_zip添加这样的代词:

$explode_mods  = explode(",", trim($_POST['mods']));

foreach($explode_mods as $k){
    $files_to_zip[] = $mod_nums[$k];
}