【问题标题】:PHP value 0 not in $_POST ArrayPHP 值 0 不在 $_POST 数组中
【发布时间】:2014-02-21 21:19:33
【问题描述】:

我正在尝试通过$_POST 将 HTML 公式中的值发送到 PHP 文件并使用这些值。一切正常,直到我将数字 0 放入 HTML 字段。然后在我的 $_POST 数组中没有创建具有我的字段名称的键或值。我已经用var_dumpprint_r 进行了检查,我要查找的密钥不在数组中。我正在使用像这样的普通 HTML 表单:

<form action="actionfile.php" method="POST">
  <input type="text" name="parameter1" />
  <input type="submit" />
</form>

在我的 PHP 文件中:

<?php
  [...]
  $content_array = $_POST;
  var_dump($content_array);
  [...]
?>

当我查看我的 Firebug 控制台时,它显示 0 已通过 POST 成功发送,但它不在数组中.....

现在真正奇怪的是,当我创建一个具有相同编码 (UTF8/UNIX) 的新文件时,整个事情都运行良好。有人能告诉我为什么它在我的第一个文件中不起作用吗?

【问题讨论】:

  • var_dump 有什么显示吗?
  • 我怀疑您的脚本还有更多内容,并且它在此代码之前以某种方式清除了 $_POST

标签: php html arrays forms post


【解决方案1】:

改用$_POST['parameter1']

【讨论】:

  • 如果不在var_dump显示的数组中,为什么按名称访问元素会出现?
  • -1 因为@Barmar 刚才说的原因。将此作为评论,要求澄清直接访问是否会产生影响(它不应该提供目前已知的信息)。
【解决方案2】:

我的var_dump 上方有一个array_filter(),删除它后,0 在我的var_dump 中显示正常。我认为array_filter() 只会踢空字段,但它也会踢 0(零)的字段

【讨论】:

  • 确保尽可能接受您的回答。可能需要一天左右的时间。
  • 这几乎肯定是问题所在。 0 和 '' 以及 null 和 false 都将使用空 () 为真。你能发布 array_filter 回调吗?
  • @Hans 我没有声明回调,只有array_filter($array)
  • 那么,它现在对你有用吗?我不确定你是否清除了它。 array_filter 的docs 表示如果回调返回 true,则该项目将保留在数组中。文档还说,如果不使用回调,则会删除等于 false 的条目。 0 计算结果为 false,因此将其删除。
  • 该文档链接的用户贡献部分中还有一条评论,说明如何使用strlen 作为回调函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多