Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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
在foreach-PHP中添加上一个值_Php - Fatal编程技术网

在foreach-PHP中添加上一个值

在foreach-PHP中添加上一个值,php,Php,假设我有这样的数据字符串 one=1&two=2&three=3&four=4&two=2 我正在使用phpforeach获取键/值,并对此时需要的键/值进行排序 foreach($_POST as $key => $value) { if ($key == "two") { // $result = Take $value and add it to the previous $value .","; } } 我试图达到的目标是如何

假设我有这样的数据字符串

one=1&two=2&three=3&four=4&two=2
我正在使用php
foreach
获取键/值,并对此时需要的键/值进行排序

foreach($_POST as $key => $value) {
   if ($key == "two") {
    // $result = Take $value and add it to the previous $value .",";
   }
}

我试图达到的目标是如何获取重复的键并添加循环中生成的先前值。例如:解决方案是将它们存储为foreach循环外部的数组

$keys = [];
foreach($_POST as $key => $value) {
   if ($key == "two") {
     $keys[] = $value;
   }
}
return $keys

将它们存储为foreach循环外部的数组

$keys = [];
foreach($_POST as $key => $value) {
   if ($key == "two") {
     $keys[] = $value;
   }
}
return $keys

如果您正在
将问题中的字符串发布到服务器,则只能看到
two
的一个值,而不能同时看到这两个值。第二个将覆盖第一个值

如果希望一个键有多个值,可以使用
[]
将其设置为数组

one=1&two[]=2&three=3&four=4&two[]=2

现在,
$\u POST['two']
将是一个数组(
one
three
three
将是字符串)。

如果将问题中的字符串发布到服务器,则只能看到
two
的一个值,而不是两个值。第二个将覆盖第一个值

如果希望一个键有多个值,可以使用
[]
将其设置为数组

one=1&two[]=2&three=3&four=4&two[]=2

现在,
$\u POST['two']
将是一个数组(
1
3
4
将是字符串)。

这将不起作用。您只能从POST、get和REQUEST中获取最后一个值。您需要解析$_服务器['QUERY_STRING'],如果解析它,您可以迭代数组:

foreach(explode('&',$_SERVER['QUERY_STRING']) as $k => $v)
{
 $val = explode('=',$v);
 $result[$val[0]] = isset($result[$val[0]]) ? $result[$val[0]].','.$val[1]:$val[1];
}

这是行不通的。您只能从POST、get和REQUEST中获取最后一个值。您需要解析$_服务器['QUERY_STRING'],如果解析它,您可以迭代数组:

foreach(explode('&',$_SERVER['QUERY_STRING']) as $k => $v)
{
 $val = explode('=',$v);
 $result[$val[0]] = isset($result[$val[0]]) ? $result[$val[0]].','.$val[1]:$val[1];
}
也有人提到过,但如果这是来自服务器的帖子,那么你就不会得到重复的密钥

也有人提到过,但如果这是来自服务器的帖子,那么你就不会得到重复的密钥

记住多个已发布的值,您可以在到达的任何数组上使用
内爆()

foreach($_POST as $key=>$value)
{
    if(is_array($value))
        $_POST[$key]=implode(',',$value);
}
要获取您似乎要查找的字符串值。

请记住多个已发布的值,您可以在到达的任何数组上使用
内爆()

foreach($_POST as $key=>$value)
{
    if(is_array($value))
        $_POST[$key]=implode(',',$value);
}

要获取您似乎想要的字符串值。

如果
将其发布到服务器,您将只看到一个
两个
,而不会同时看到两个值。要访问任何数组的名称结构,请使用print\r和。如果
POST
将其发送到服务器,则只会看到一个
两个
,不会同时看到两个值。要访问任何数组的名称结构,请使用print\r和。数组中不能有两个相同的键。此代码可以简化为
$keys=$\u POST['two']
(这将是一个字符串,而不是一个数组)。仅供参考,在php中,为了访问数组,您不需要在foreach之外初始化数组。只需将内容添加到数组中,并在完成后返回。数组中不能有两个相同的键。此代码可以简化为
$keys=$\u POST['two']
(这将是一个字符串,而不是一个数组)。仅供参考,在php中,为了访问数组,您不需要在foreach之外初始化数组。只需将内容添加到数组中,并在完成后返回。您不需要在
=
上进行分解吗?是的,我在问题中没有问号,所以我将其从答案中删除,但如果您有一个问号,您应该将其取出,以便此操作正常。不,我的意思是您需要执行
列表($key,$value)=分解('=',$value)
。(我想说你需要分解等号。问号是因为我在问一个问题:-P)你不也需要分解
=
?是的,我在问题中没有问号,所以我把它从答案中漏掉了,但是如果你有一个问号,你应该把它拿出来让它工作不,我的意思是你需要做
列表($key,$value)=分解('=',$value)
。(我想说你需要分解等号。问号是因为我在问一个问题:-P)