Php 关联数组的问题

Php 关联数组的问题,php,arrays,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 = 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']
);
$blah = array();

foreach ($explode_mods as $value)
{
    $blah[] = $mod_nums[$value];
}
效果很好。现在我想添加一个$u POST值,这样我就可以输入像1,2这样的数字,以及以后添加到$mod_nums数组中的其他数字,比如1,3,6,12。因此,我对那些发布的值使用了分解:

$explode_mods  = explode(",", trim($_POST['mods']));
现在,我要回答一个大问题,这个问题让我绞尽脑汁,花了好几个小时,却无法解决。。。。我需要$files\u to\u zip仍然在一个数组中,并显示$mod\u 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\u to\u zip变量,已发布的数字将以数组格式显示。有道理?简而言之,我需要一个数组来具有动态值。谢谢:)

编辑

哦,多年前,我在做类似的事情时,凭记忆自己发现了这一点。这看起来很难,但事实并非如此。我必须使用foreach并将变量分配到如下数组中:

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

foreach ($explode_mods as $value)
{
    $blah[] = $mod_nums[$value];
}
然后我把$files\u分配给了$zip,等等:

$files_to_zip = $blah;

工作非常完美:)我只是忘记了如何将值动态分配到数组中。

也许我没有正确理解您的意思,但这不是一个简单的foreach循环,可以将entrys添加到
$files\u to\u zip

// 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];
}
$explode_mods  = explode(",", trim($_POST['mods']));

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

我见过其他脚本经常使用这个。基本上,我需要从$\u POST字段将动态值放入数组中,其中的值用字符串中的逗号分隔。对不起,您的问题不是很清楚。
$\u POST['mods']
包含什么类型的值?您已经将
$files\u to\u zip
定义为一个数组,为什么需要更改任何内容?我猜您实际上想做的是使用foreach循环POST数据。没有进一步的信息就不能说。我感觉你在问一些非常基本的问题。举一个简单的例子:在$\u POST['mods']中有什么,你想创建什么?是的,我自己从记忆中找到了!!!这很简单!我将编辑我的原始帖子。哈哈,是的,在我弄明白后,你们回答得很正确,但理解起来很好:)@John Jenkins:你们自己已经弄明白了,真是太好了。这样你几乎再也不会忘记它了。点击答案左上角计票下方的空白勾号,即可接受答案,因此此问题被标记为已解决。有关更多详细信息,请参阅。谢谢:)我选择了您的答案,我是否正确地完成了此问题?@John Jenkins:是的,您的问题已经解决。我们的答案就像你自己已经发现的一样,因此,如果它对你有效,它也会对其他人有效。问题已标记为已解决,祝您编码顺利。:)哈哈,是的,在我弄明白后,你们回答对了,但理解得很好:)