【问题标题】:Empty array not appearing in $_POST$_POST 中没有出现空数组
【发布时间】:2015-05-12 13:20:36
【问题描述】:

我有一些同名的复选框,其中任何一个都可以选中。 用户也可以勾选无。

我正在使用数组表示法:

<ul>
  <li><input type="checkbox" name="data[list][]" /> 1</li>
  <li><input type="checkbox" name="data[list][]" /> 2</li>
  <li><input type="checkbox" name="data[list][]" /> 3</li>
</ul>

但在 $_POST 中,如果至少检查了其中一个,我只会获取数组。 如果没有检查任何一个,我不会得到一个空数组。这让我应该是抽象的 PHP 表单处理程序感到困惑。我不想为其中的某些字段名称编写 ifs 代码:s

foreach($_POST['data'] as $key => $value){

  $some_object->set($key, $value); 
  // value should be empty array if nothing is checked :s

}

有没有办法只获取空数组?

【问题讨论】:

  • 代码呢? Html 表单和 php 帖子?请给我们看。
  • 顺便说一句,我们正在等待@Dagon
  • 好的,我添加了一些代码,但我看不出它是如何相关的
  • 对不起,我在洗澡,我错过了什么?
  • 空复选框永远不会返回,它是一个 html 的东西(大部分)

标签: php arrays forms post


【解决方案1】:

纯 html 方法怎么样:

<input type="hidden" name="data[list]" value="">
<ul>
  <li><input type="checkbox" name="data[list][]" /> 1</li>
  <li><input type="checkbox" name="data[list][]" /> 2</li>
  <li><input type="checkbox" name="data[list][]" /> 3</li>
</ul>

这总是至少返回:

"data" => array:1 [▼
   "list" => ""
]

如果没有勾选复选框,列表将是一个空字符串,而不是一个空数组,不知道这对你来说是否足够好?

【讨论】:

    【解决方案2】:

    有没有办法只获取空数组?

    没有。如果没有选中复选框,浏览器就不会发送任何内容。

    但是我可以理解你想要阻止 ifs。您可以通过初始化为默认值来实现。 array union operator 对此很有用:

    $_POST += ['data' => []];
    

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2015-06-24
      • 1970-01-01
      • 2017-01-07
      • 2016-01-25
      • 2016-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多