2011-03-26 86 views
13

我有一个像PHP添加逗号到每一个项目,但最后一个

foreach ($_GET as $name => $value) { 
    echo "$value\n"; 
} 

一个循环,我想在每个项目之间添加一个逗号所以它结束了这个样子。

var1, var2, var3 

由于我使用的foreach我没有办法告诉我是什么迭代次数上。

我该怎么做?

+0

没办法?您可以手动为代码添加计数器。 – 2011-03-26 05:39:14

+0

他的结果不应该是'name:var1,name:var2,name:var3'呢? – kjy112 2011-03-26 05:42:33

+0

对不起我的疏忽,我没有看到我的代码片段。 – giodamelio 2011-03-26 06:03:13

回答

0

对不起,我没有正确陈述我的问题。 为我工作的awnser是

implode(', ', $_GET); 

感谢,giodamelio

+0

不会让我明天。 – giodamelio 2011-03-26 22:23:18

+0

哇,你只有14。 – kjy112 2011-03-26 22:40:14

+0

@ kjy112谢谢,我绝对会。编程是真棒:) – giodamelio 2011-03-27 00:40:28

3
$comma_separated = implode(", ", $_GET); 

echo $comma_separated; 

可以使用破灭和实现这一

+0

$ name是什么? – 2011-03-26 05:39:42

+0

以为他只想要值 – kjy112 2011-03-26 05:40:29

+0

你为什么不读他的问题? – 2011-03-26 05:41:16

0

我通常做这样的事情(伪代码):

myVar 

for... { 
    myVar = i + "," 
} 

myVar = trimOffLastCharacter(myVar) 

echo myVar 
6

像这样:

$total = count($_GET); 
$i=0; 
foreach ($_GET as $name => $value) { 
    $i++; 
    echo "$name: $value"; 
    if ($i != $total) echo', '; 
} 

解释:您可以通过count()找到所有值的总数。在运行foreach()循环时,您需要对迭代进行计数。在循环内部,当迭代不是最后时(不等于所有值的总数)时,告诉它回显','。

30

只需用foreach建立你的输出,然后破灭数组并输出结果:

$out = array(); 
foreach ($_GET as $name => $value) { 
    array_push($out, "$name: $value"); 
} 
echo implode(', ', $out); 
+0

嗯..巨大的阵列上的性能? – Fr0zenFyr 2015-05-29 20:15:30

+0

@ Fr0zenFyr,真的,你的数组需要相当大才能对性能产生影响。如果你有这么大的数组,为什么要用逗号分隔的字符串?这一切都取决于上下文,在这里。在美妙的编码世界中,没有像魔术一样适合所有的解决方案。我邀请你提出一个相关的问题,描述你的具体问题,如果*这*不是一个可行的解决方案。 – 2015-05-29 22:10:53

+0

我真的没有这个问题,只是检查大数组的可能性,如果有人想建立一个'CSV',可以说。 – Fr0zenFyr 2015-05-30 07:09:38

1

你也可以这样来做:

$output = ''; 
foreach ($_GET as $name => $value) { 
    $output = $output."$name: $value, "; 
} 
$output = substr($output, 0, -2); 

这只是使一个巨大的字符串你可以输出。不同的风格,不同的方法,真的。

相关问题