$ _POST具有相同的密钥?

问题描述:

我有一个POST表单,比提交时使用键和值来替换一组.ini文件中的行。

$reading = fopen('Original/file.ini', 'r'); 
$writing = fopen('file.ini', 'w'); 

while (!feof($reading)) { 
    $line = fgets($reading); 
    foreach ($_POST as $key => $value) 
    { 
     if (stristr($line, $key.)) { 
      $line = " ".$key." = ".$value."; 
"; 
     } 
    } 
    fputs($writing, $line); 
} 
fclose($reading); fclose($writing); 

现在这工作正常。但是,现在我需要编辑多个文件,其中很多文件包含相同的密钥。当然,这些文件的文件名和路径是不一样的,所以我想知道是否有任何方法将文本输入分组,所以我可以继续使用我的PHP解决方案?例如,假设我有“product1.ini”和“product2.ini”,但都有“productPrice =”行。有什么建议么?

我建议你改变发布变量的方法,使每个ini文件中的设置被张贴在命名为ini文件的数组。

所以,你会想要得到一个职位阵列像这样:

array(
    'product1' => array(
     'key1'=>'value1', 
     'key2'=>'value2' 
    ), 
    'product2' => array(
     'key1'=>'value1', 
     'key2'=>'value2' 
    ), 
) 

这将给予尽可能多的INI文件,只要你喜欢张贴设置的能力。

如果您以前没有发布过嵌套数组,那么这很容易实现。 HTML输入字段名称只需要用方括号中的数组键格式化即可:

<input name='product1[key1]'> 

希望有所帮助。

+0

谢谢。我已经成功地使用了这个解决方案。 – 2013-03-01 15:44:55

我不知道如果我理解你的权利,但在你的HTML文件时,可以通过添加“[]”字符名称属性的末尾创建使用相同名称的多个文本框

<input type="text" name="edit[]" /> 
<input type="text" name="edit[]" /> 

然后在你的PHP代码,你可以把它作为一个数组

var_dump($_POST['edit']); 
//result: array(...)