【问题标题】:Warning: implode() [function.implode]: Invalid arguments passed in Form Check box警告:implode() [function.implode]:在表单复选框中传递的参数无效
【发布时间】:2012-08-22 22:42:17
【问题描述】:

现在一直在努力解决这个问题,可能很简单......

我在尝试提交联系表单时不断收到以下错误

警告:implode() [function.implode]:在第 240 行传入的参数无效。

HTML 代码

<input type="checkbox" name="socialmedia[]" value="Facebook">Facebook<br>
<input type="checkbox" name="socialmedia[]" value="Twitter">Twitter<br>
<input type="checkbox" name="socialmedia[]" value="YouTube">YouTube<br>
<input type="checkbox" name="socialmedia[]" value="Flickr">Flickr<br>
<input type="checkbox" name="socialmedia[]" value="Vimeo">Vimeo<br>

PHP 代码

$socialmedia = array();
$socialmedia = implode(",",$_POST['socialmedia']);

有什么想法吗?

【问题讨论】:

  • 嗯,你在里面传了什么?
  • 检查 $_POST['socialmedia'] - 它是一个数组吗?
  • 向我们展示print_r($_POST);的结果
  • 检查你的 PHP 代码的大量 vars - 是否设置了$_POST['socialmedia']?你的表单有正确的post 方法吗?

标签: php html sql


【解决方案1】:

当用户没有选中任何复选框时,我已经看到过这种情况。您收到警告的原因是,如果未选中任何复选框,$_POST['socialmedia'] 实际上并不存在。你实际上是在打电话给implode(",", NULL);


在字符串中获取选中的复选框:

$checkboxes = !empty($_POST['socialmedia']) ? $_POST['socialMedia'] : array();
$socialmedia = implode(',' $checkboxes);

似乎您可能希望将它们放在一个数组中。从你的问题很难判断。如果你想把它们放在一个数组中,你可以这样做:

$socialmedia = !empty($_POST['socialmedia']) ? $_POST['socialMedia'] : array();

如果没有选中复选框,$socialmedia 将是一个空数组,或者将包含复选框的值。

【讨论】:

  • 我倾向于使用empty($_POST['socialmedia']) ? array() : $_POST['socialMedia'];
【解决方案2】:

给你:

<form method="post">
<input type="checkbox" name="socialmedia[]" value="Facebook">Facebook<br>
<input type="checkbox" name="socialmedia[]" value="Twitter">Twitter<br>
<input type="checkbox" name="socialmedia[]" value="YouTube">YouTube<br>
<input type="checkbox" name="socialmedia[]" value="Flickr">Flickr<br>
<input type="checkbox" name="socialmedia[]" value="Vimeo">Vimeo<br>
<input type="submit">
</form>
<?
$socialmedia = array();
if(isset($_POST['socialmedia'])) $socialmedia = implode(",",$_POST['socialmedia']);
print_r($socialmedia);
?>

唯一的改变是在数组内爆之前额外检查if(isset($_POST['socialmedia']))

【讨论】:

  • 不知道为什么有人做了-1:这是一个正确的解决方案,与我的答案中的相应行并没有什么不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-30
  • 1970-01-01
相关资源
最近更新 更多