Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php foreach$关键变量说明_Php - Fatal编程技术网

Php foreach$关键变量说明

Php foreach$关键变量说明,php,Php,我有这个密码 if (isset($_POST['submit2'])) { foreach ($_POST['check_list'] as $key) { $input = implode(",", $key); } } /*end is isset $_POST['submit2'] */ echo $input; 当我将内爆参数更改为in爆(,,$\u POST['check\u list'])时,它会产生错误“in爆():传递的参数无效”它会按预期工作。 有人

我有这个密码

if (isset($_POST['submit2']))
{ 

  foreach ($_POST['check_list'] as $key) {
    $input = implode(",", $key);
  }
} /*end is isset $_POST['submit2'] */


echo $input;
当我将内爆参数更改为
in爆(,,$\u POST['check\u list'])时,它会产生错误“in爆():传递的参数无效”
它会按预期工作。 有人能解释一下原因吗?据我所知,$key变量应该与$u POST['submit2']相同,这不是foreach中As的功能吗


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

内爆
函数需要数组作为第二个参数。您正在传递字符串值作为第二个参数。这就是它不工作的原因。

内爆
函数需要数组作为第二个参数。您正在传递字符串值作为第二个参数。这就是它不起作用的原因。

Foreach已经通过您的值进行迭代。您可以从那里获取值并回显,也可以将其添加到另一个数组
input
,如果您需要的话:

if (isset($_POST['submit2']))
{ 

  foreach ($_POST['check_list'] as $key => $value) {
    $input[] = 'Value #'. $key .' is ' . $value;
  }
}


echo implode(",", $input);

Foreach已经通过您的值进行迭代。您可以从那里获取值并回显,也可以将其添加到另一个数组
input
,如果您需要的话:

if (isset($_POST['submit2']))
{ 

  foreach ($_POST['check_list'] as $key => $value) {
    $input[] = 'Value #'. $key .' is ' . $value;
  }
}


echo implode(",", $input);

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

  • 您说“据我所知,$key变量应该与$\u POST['submit2']相同,这不是foreach中As的功能吗?”。答案是否定的: foreach循环外部的
    $key
    变量将包含存储在
    $\u POST['check\u list']
    中的数组的最后一个元素,
    $\u POST['submit2']
    似乎仅用于检查是否已设置,而不检查代码段中的其他内容。
    foreach
    所做的是遍历任何迭代器变量(案例中的数组),并在案例中的变量(
    $key
    )中设置当前项。因此在循环之后,
    $key
    将包含该数组的最后一个元素。有关更多信息,请参阅文档:[

  • 内爆
    希望第二个参数是数组,似乎您没有提供数组,而是提供任何其他类型。
    $\u POST['check\u list']
    的最后一项实际上是数组吗


  • 如果您试图将
    $\u POST['check\u list']
    的所有项目“粘合”在一起,则不需要迭代,只需在该项目上使用内爆:
    $input=in爆(“,”,$\u POST['check\u list']);
    。否则,我不确定您想做什么


  • 也许如果你解释一下你想做什么,我们可以帮你做得更好。

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

  • 你说‘据我所知,$key变量应该与$_POST['submit2']相同,这不是foreach中As的功能吗?’。答案是否定的: foreach循环外部的
    $key
    变量将包含存储在
    $\u POST['check\u list']
    中的数组的最后一个元素,
    $\u POST['submit2']
    似乎只用于检查是否已设置,而不用于检查代码段中的其他内容。
    foreach
    所做的是遍历任何迭代器变量(案例中的数组)并在案例中的变量(
    $key
    )中设置当前项。因此循环后,
    $key
    将包含该数组的最后一个元素。有关更多信息,请参阅文档:[

  • 内爆
    希望第二个参数是数组,似乎您没有提供数组,而是提供任何其他类型。
    $\u POST['check\u list']
    的最后一项实际上是数组吗


  • 如果您试图将
    $\u POST['check\u list']
    的所有项目“粘合”在一起,则不需要迭代,只需在该项目上使用内爆:
    $input=in爆(“,”,$\u POST['check\u list']);
    。否则,我不确定您想做什么


  • 也许如果你解释一下你想做什么,我们可以帮你做得更好。

    你是说
    $\u POST['check\u list']
    是一个数组,如果
    内爆()
    对它起作用,那么不需要循环获取单个项目。要
    内爆()
    值:

    echo implode(',', $_POST['check_list']);
    
    内爆()
    键:

    echo implode(',', array_keys($_POST['check_list']));
    
    foreach()

    foreach($_POST['check_list'] as $key => $val) {
        echo "$key = $value<br />";
    }
    
    foreach($\u POST['check\u list']作为$key=>$val){
    回显“$key=$value
    ”; }
    您是说
    $\u POST['check\u list']
    是一个数组,如果
    内爆()
    对其有效,则无需循环获取单个项目。要
    内爆()
    值:

    echo implode(',', $_POST['check_list']);
    
    内爆()
    键:

    echo implode(',', array_keys($_POST['check_list']));
    
    foreach()

    foreach($_POST['check_list'] as $key => $val) {
        echo "$key = $value<br />";
    }
    
    foreach($\u POST['check\u list']作为$key=>$val){
    回显“$key=$value
    ”; }
    在您的代码中,
    $key
    $\u POST['check\u list']
    数组中的一个单独项目,每次通过循环。
    内爆()
    采用数组而不是字符串,所以只需使用
    内爆(,,$\u POST['check\u list'])
    并且没有循环。@abracadver也许你的答案应该指向
    内爆
    的文档。你真的需要每次有项目时都内爆数组吗?把它从循环中取出好的谢谢你的帮助。@abracadver谢谢。所以在我的代码中$key只是数组中键的名称是吗?在你的代码中
    $key都是
    $\u POST['check\u list']
    数组中的一个单独项。
    内爆()
    采用数组而不是字符串,所以只需使用
    内爆(“,”,$\u POST['check\u list'])
    并且没有循环。@abracadver也许你的答案应该指向
    内爆
    的文档。你真的需要每次有项目时都内爆数组吗?把它从循环中取出好的谢谢你的帮助。@abracadver谢谢。所以在我的代码中,$key只是数组中键的名称是吗?我的问题不是关于t他使功能内爆