【问题标题】:Submit one array for each selected checkbox为每个选中的复选框提交一个数组
【发布时间】:2013-11-14 00:16:45
【问题描述】:

我是 php 新手,我正在构建一个表单,当用户选中复选框时,我需要在其中发送一对值。

目前我有以下代码(在表单页面中)...

$value = array('title' => $title, 'year' => $year);
echo("<input type=\"checkbox\" name=\"options[]\" value=\"$value\"/>);

然后在下一页...

foreach($_REQUEST['options'] as $key => $value) {
    $title = $value['title'];
    $year = $value['year'];
    echo("$title ($year)<br/>");
}

从输出来看,它似乎只发送了“数组”这个词,而不是数据。

有没有办法发送和排列为复选框值,或者有没有更好的设计来实现这个功能?

【问题讨论】:

  • 为什么需要为值发送一个数组?确定是他们选择的那个吗?
  • $_REQUEST['options'] 是一个多维数组

标签: php arrays forms checkbox


【解决方案1】:

在 echo 命令中使用 $value 时,它​​必须将数组转换为字符串。 PHP 通过将其转换为字符串“Array”来做到这一点。如果您查看生成的 HTML,会发现它实际上是 .

假设你的标题和年份永远不会有逗号,解决这个问题的一种简单方法是在将数组放入 HTML 之前用逗号 implode(),然后将发布的数据explode() 放回原始数组:

$value =implode(',',  array($title, $year));
echo("<input type=\"checkbox\" name=\"options[]\" value=\"$value\"/>);

//later on...

foreach($_REQUEST['options'] as $key => $value) {
  list($title, $year) = explode(',', $value);
  echo("$title ($year)<br/>");
}

【讨论】:

  • 我不能授予标题不会有逗号或其他特殊字符。在那种情况下,也许我需要重新考虑我的方法。
猜你喜欢
  • 1970-01-01
  • 2020-10-31
  • 2021-12-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多