我总是吮吸复杂的数组,我的大脑中肯定有东西阻止我理解它们。我将尝试使这个例子非常简单,所以我们不会偏离主题。我使用此代码使用数字来表示每个文件名:
$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;
完美运行:)我忘了如何动态地将值分配到数组中。
答案 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];
}