php for循环逗号,关于php:从foreach循环中删除最后一个逗号

我使用foreach循环从数据库中回显一些值,如果这有意义的话,我需要从最后一个循环中去掉最后一个逗号。

我的循环很简单,如下所示

foreach($results as $result){

echo $result->name.',';

}

发出回声

result,result,result,result,

我只需要去掉最后那个讨厌的逗号。

任何帮助都很好:)

干杯

有人最终注意到我的错误,真的需要5票赞成吗…?

学着使用模板,伙计。

更好的:

$resultstr = array();

foreach ($results as $result) {

$resultstr[] = $result->name;

}

echo implode(",",$resultstr);

+1这显然是解决这一问题的正确方法。应该是公认的答案。

它可以工作,但它会在逗号之前生成空格吗?

@Mufaddal_mw不应该这样做,除非空白空间是$result->name的一部分(或者你在那里写的任何内容)。请随意查阅有关内爆语义的PHP文档。

1。但在大concat添加|弦乐

$s = '';

foreach ($results as $result) {

if ($s) $s .= '|';

$s .= $result;

}

echo $s;

demo 2。如果没有最后的项目|只有回声

$s = '';

$n = count($results);

foreach ($results as $i => $result) {

$s .= $result;

if (($i+1) != $n) $s .= '|';

}

echo $s;

demo 3。然后,implode load大阵列

$s = array();

foreach ($results as $result) {

$s[] = $result;

}

echo implode('|', $s);

demo 4。然后把最后的弦乐concat大|(或rtrim它)

$s = '';

foreach ($results as $result) {

$s .= $result . '|';

}

echo substr($s, 0, -1);

# echo rtrim($s, '|');

demo 5。使用array_map()concat弦乐

echo implode('|', array_map(function($result) { return $result; }, $results));

demo

$result_names = '';

foreach($results as $result){

$result_names .= $result->name.',';

}

echo rtrim($result_names, ',');

这会杀死循环中的所有逗号,不是吗?…不仅仅是输出字符串的最后一个?

当我意识到你在循环中回响后,我编辑了这段代码。

我已经与本期有相同类似的问题最近。我使用它由固定的安全increment美元,它initializing 0,然后在它里面的foreach increment环。在别的地方,如果环安全,包括回声,与该项声明的是我用逗号,如果不counter美元的sizeof(煤)的阵列/操作员的变量。

我不知道如果这会解决你的问题本身,但它帮助我与我的。这个问题是我realize年-老了,但这将帮助hopefully的别的。我在相当大的新的PHP,所以我不完全明白很多的答案,我是在给定的,虽然他们是相当insightful implode,特别的一个。

$i=0;

foreach ($results as $result) {

$i++;

if(sizeof($results) > $i) {

echo $result .",";

} else {

echo $result;

}

}

$string ="";

while ($row = mysql_fetch_array($result)) {

$string .= $name . ', ';

}

echo substr($string, 0, strlen($string) - 2);

不是因为漂亮,但也的作品:

$first=true;

foreach($results as $result){

if(!$first) { echo ', '; }

$first=false;

echo $result->name;

}

这只会在第一项中省略逗号。问题是关于最后一项。

$arraySize = count($results);

for($i=0; $i

{

$comma = ($i

echo $results[$i]->name.$comma;

}

$i = 1;

$count = count( $results );

foreach( $results as $result ) {

echo $result->name;

if ( $i < $count ) echo",";

++$i;

}

?>

很容易与end($array)这里:

foreach($results as $result){

echo $result->name . (end($results) ? '' : ',');

}

参考这里。

另一个聪明的方法是:

foreach($results as $result){

echo ($passed ? ',' : '') . $result->name;

$passed = true;

}

在这种情况下,在第一环$passed是NULL和,不打印。

$return = array(any array)

$len = count($return);

$str = '';

$i = 1;

foreach($return as $key=>$value)

{

$str .= ''.$value['cat_title'].'';

if($len > $i)

{

$str .= ',';

$i = $i+1;

}

}

echo $str;

?>

$a[0] = 'John Doe';

$a[1] = 'Jason statham';

$a[2] = 'Thomas Anderson';

$size = count($a);

foreach($a as $key=>$name){

$result .= $name;

if($size > $key+1) $result .=', ';

}

echo $result;

如果数组没有数字索引怎么办?

描述你在做什么是个好主意,发布代码只会让人很困惑。

欢迎使用StackOverflow。考虑对您提供的任何代码提供解释。这将允许提问者从你的例子中学习。请参阅有关编写好答案的常见问题解答。

我要做这个,因为我总是阿洛特试图在jplot饲料数量大,我发现其容易的在前面用逗号把名人像比环:

foreach($arrayitem as $k){ $string =  $string.",".$k;

}

然后快点把第一个字符(用逗号substr的helps)使用它,如果你知道一个guestimate的弦乐将是长的,我不知道什么是对的limit substr最大特点。

echo substr($a,1,10000000);

希望这helps。

第一个得到所有的输出由buffering输出使用。然后,用逗号和显示它的装饰。所以,因为它像这样:

ob_start();

foreach($results as $result)

{

echo $result->name.',';

}

$output = ob_get_clean();

echo rtrim($output, ',');

如果该方法的输出buffering helps环是非常大的(在这里是posting和柯博文,只为brevity),然后使用ob是容易变化的研究internals无环。

不需要OB,只需要建立一个字符串,修剪然后回音。

@BoltClock:是的,但是如果内部循环非常大(并且OP在这里发布只是为了简洁),那么在不更改内部循环的情况下使用OB就更容易了。谢谢你的+1。

@上校,谢谢你的赞赏。当循环中有数百个loc和许多echo语句时,ob是一个简单的快速修复方法。

@上校,"你们"是什么意思?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值