foreach $ key变量澄清

时间:2017-03-06 16:06:37

标签: php

我有这段代码

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中的那个吗?

对不起,如果这是一个愚蠢的问题,我是自学成才,有时候很难在网上找到这样的细节。

4 个答案:

答案 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)

你似乎在几个层面感到困惑,所以让我澄清其中的一些:

  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]

  2. implode期望第二个参数是一个数组,似乎你没有提供数组,而是任何其他类型。 $_POST['check_list']的最后一项实际上是一个数组吗?

  3. 如果您正在尝试粘合'将$_POST['check_list']的所有项目放在一起,您不需要进行迭代,只需在内核上使用内爆:$input = implode(",", $_POST['check_list']);。否则,我不确定你想做什么。

  4. 也许如果你解释一下你想做什么,我们可以提供更好的帮助。

答案 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函数需要数组作为第二个参数。您将字符串值作为第二个参数传递。这就是它无法正常工作的原因。