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['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
变量将包含存储在$\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每次通过循环时,code>都是$\u POST['check\u list']
数组中的一个单独项。内爆()
采用数组而不是字符串,所以只需使用内爆(“,”,$\u POST['check\u list'])
并且没有循环。@abracadver也许你的答案应该指向内爆
的文档。你真的需要每次有项目时都内爆数组吗?把它从循环中取出好的谢谢你的帮助。@abracadver谢谢。所以在我的代码中,$key只是数组中键的名称是吗?我的问题不是关于t他使功能内爆