如何从PHP中的每个循环中排除<input type =“hidden”/>

时间:2012-03-20 00:58:20

标签: php forms

我有一个HTML表单,如下所示:

<form action="index.php" method="post">
<input type="hidden" value="Hidden Value" name="A Hidden Value" />
<select name="dropdownOption">
  <option value="First Choice +200">First Choice</option>
  <option value="Second Choice +300">Second Choice</option>
</select>
<p><input type="checkbox" value="Rocket +100"> Rocket</p>
</form>

我正在循环遍历此表单的值:

 foreach($_POST as $key => $value) {

 }

如何从foreach循环中排除隐藏的输入?

另外,所有版本的PHP都支持输入名称中的空格(例如是否有效?)在我的PHP版本中,它会自动用下划线替换空格,这很好,它是否适用于所有版本的PHP?

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

无法区分php中不同类型的HTML输入字段。我的建议是在隐藏字段的名称中使用某种前缀或其他标识符。然后,您可以检查循环中字段名称中是否存在此前缀。你可以做到

if (strpos($key, 'hdn_') === false) // proceed 

答案 1 :(得分:1)

  1. 避免在标识符中使用空格。
  2. 如果您只想“过滤”hidden字段,请尝试以下操作:

  3. <?php
    // the not-hidden ones
    $allowed_field_names = array("some_field", "another_field"); 
    
    // Now, we're going to 'filter' the "hidden" fields
    // The rest (the "allowed" ones are stored in $newPost
    $newPost = array_intersect_key($_POST, array_flip($allowed_field_names));
    
    foreach ($newPost as $key=>$value)
    {
         // Do sth
    }
    ?>
    

答案 2 :(得分:0)

没有内置的方法来做你要求的事情。这就是“编程”发挥作用的地方 解决这个问题的一种方法是将你在GET中隐藏元素中放入的内容传递给它 也就是说,将其添加到表单元素的action属性。