【问题标题】:How to exclude <input type="hidden"> from a for each loop in PHP如何从 PHP 中的每个循环中排除 <input type="hidden">
【发布时间】:2012-03-20 00:58:20
【问题描述】:

我有一个如下所示的 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?

感谢您的帮助。

【问题讨论】:

  • 您不应该在标识符中放置空格。这是不好的做法,一些 PHP 安装可能会在包含它们的情况下中断。如果您想忽略隐藏的输入,为什么它们首先出现在您的表单中?如果您使用 JavaScript,请改用 data-* 属性。
  • 不是 Javascript 而是 PHP,隐藏的属性用于 foreach 循环之外的其他目的。我需要在 foreach 循环中定位不是隐藏输入的所有内容。
  • 您无法从服务器端区分发布的字段类型,我同意 JamWaffles,这是您现在尝试做的一个非常糟糕的做法。
  • 在您的 PHP 中,您可以创建一个包含要忽略的字段名称的数组,然后使用 PHP 的 array functions 对 $_POST 执行某种布尔运算。否则,使用要循环的字段创建一个数组,然后执行foreach()

标签: php forms


【解决方案1】:

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

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

【讨论】:

  • 你会想要做那个if (strpos($key,'hdn_') === false)。字符串开头的标识符将返回位置 0,其计算结果为 false ...
  • 你是对的。我发帖后就想到了,但我已经在开车了。谢谢指正。
【解决方案2】:
  1. 避免在标识符中使用空格。
  2. 如果您只想“过滤”hidden 字段,请尝试以下操作:

<?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
}
?>

【讨论】:

    【解决方案3】:

    没有内置的方法来做你所要求的。这就是“编程”发挥作用的地方。
    解决此问题的一种方法是将您放入 GET 中的隐藏元素中的内容改为传递。
    即添加到表单元素的action属性中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多