我有这段代码
if (isset($_POST['submit2']))
{
foreach ($_POST['check_list'] as $key) {
$input = implode(",", $key);
}
} /*end is isset $_POST['submit2'] */
echo $input;
它产生错误“implode():传递的参数无效”当我将内爆参数更改为implode(",", $_POST['check_list'])
时,它按预期工作。
有人可以澄清为什么吗?据我所知,$ key变量应该与$ _POST ['submit2']相同,这不是foreach中的那个吗?
对不起,如果这是一个愚蠢的问题,我是自学成才,有时候很难在网上找到这样的细节。
答案 0 :(得分:1)
Foreach已经通过您的值进行迭代。您可以获取该值并从那里回显它,或者您可以将其添加到另一个数组input
,如果这就是您所需要的:
if (isset($_POST['submit2']))
{
foreach ($_POST['check_list'] as $key => $value) {
$input[] = 'Value #'. $key .' is ' . $value;
}
}
echo implode(",", $input);
答案 1 :(得分:1)
你似乎在几个层面感到困惑,所以让我澄清其中的一些:
你说'据我所知,$ key变量应与$ _POST相同[' submit2']并不是那样的foreach呢?'。答案是NO和NO:
foreach循环外部的$key
变量将包含存储在$_POST['check_list']
中的数组的最后一个元素,$_POST['submit2']
似乎仅用于检查是否已设置且没有其他内容在你的代码中。 foreach
的作用是遍历任何迭代器变量(在您的情况下是一个数组),并在您的案例中设置变量($key
)中的当前项。因此在循环之后,$key
将包含该数组的最后一个元素。有关更多信息,请参阅文档:[http://php.net/manual/en/control-structures.foreach.php]
implode
期望第二个参数是一个数组,似乎你没有提供数组,而是任何其他类型。 $_POST['check_list']
的最后一项实际上是一个数组吗?
如果您正在尝试粘合'将$_POST['check_list']
的所有项目放在一起,您不需要进行迭代,只需在内核上使用内爆:$input = implode(",", $_POST['check_list']);
。否则,我不确定你想做什么。
也许如果你解释一下你想做什么,我们可以提供更好的帮助。
答案 2 :(得分:1)
你是说$_POST['check_list']
是一个数组,如果implode()
适用它,所以不需要循环来获取单个项目。要implode()
值:
echo implode(',', $_POST['check_list']);
要implode()
键:
echo implode(',', array_keys($_POST['check_list']));
foreach()
遍历一个数组以显示每个项目,并逐个获取单个值和可选键:
foreach($_POST['check_list'] as $key => $val) {
echo "$key = $value<br />";
}
答案 3 :(得分:0)
implode
函数需要数组作为第二个参数。您将字符串值作为第二个参数传递。这就是它无法正常工作的原因。