【问题标题】:$_POST with same key?$_POST 使用相同的密钥?
【发布时间】:2013-02-27 19:47:05
【问题描述】:

我有一个 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 =”行。有什么建议吗?

【问题讨论】:

    标签: php html post input key


    【解决方案1】:

    我建议更改发布变量的方式,以便将每个 ini 文件的设置发布到以该 ini 文件命名的数组中。

    所以你会想要一个这样的帖子数组:

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

    这将使您能够发布任意数量的 ini 文件的设置。

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

    <input name='product1[key1]'>
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢。我已经成功使用了这个解决方案。
    【解决方案2】:

    我不确定我是否理解正确,但在您的 html 文件中,您可以通过在名称属性末尾添加“[]”字符来创建多个使用相同名称的文本框

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

    然后在您的 php 代码中,您可以将其作为数组获取

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

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 2022-10-20
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 2019-02-19
      相关资源
      最近更新 更多