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


Stripping last comma from a foreach loop

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

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

1
2
3
foreach($results as $result){
  echo $result->name.',';
}

发出回声

1
result,result,result,result,

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

任何帮助都很好:)

干杯


更好的:

1
2
3
4
5
$resultstr = array();
foreach ($results as $result) {
  $resultstr[] = $result->name;
}
echo implode(",",$resultstr);


1。但在大concat添加|弦乐

1
2
3
4
5
6
$s = '';
foreach ($results as $result) {
    if ($s) $s .= '|';
    $s .= $result;
}
echo $s;

demo

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

1
2
3
4
5
6
7
$s = '';
$n = count($results);
foreach ($results as $i => $result) {
    $s .= $result;
    if (($i+1) != $n) $s .= '|';
}
echo $s;

demo

3。然后,implode load大阵列

1
2
3
4
5
$s = array();
foreach ($results as $result) {
    $s[] = $result;
}
echo implode('|', $s);

demo

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

1
2
3
4
5
6
$s = '';
foreach ($results as $result) {
    $s .= $result . '|';
}
echo substr($s, 0, -1);
# echo rtrim($s, '|');

demo

5。使用array_map()concat弦乐

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

demo


1
2
3
4
5
$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,特别的一个。

1
2
3
4
5
6
7
8
9
$i=0;
foreach ($results as $result) {
    $i++;
    if(sizeof($results) > $i) {
        echo $result .",";
    } else {
        echo $result;
    }
}

1
2
3
4
5
$string ="";
while ($row = mysql_fetch_array($result)) {
  $string .= $name . ', ';
}
echo substr($string, 0, strlen($string) - 2);

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

1
2
3
4
5
6
$first=true;
foreach($results as $result){
    if(!$first) { echo ', '; }
    $first=false;
    echo $result->name;
}


1
2
3
4
5
6
$arraySize = count($results);
for($i=0; $i<$arraySize; $i++)
{
  $comma = ($i<$arraySize) ?"," :"";
  echo $results[$i]->name.$comma;
}

1
2
3
4
5
6
7
8
9
<?php
$i = 1;
$count = count( $results );
foreach( $results as $result ) {
    echo $result->name;
    if ( $i < $count ) echo",";                              
    ++$i;
}
?>

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

1
2
3
foreach($results as $result){
  echo $result->name . (end($results) ? '' : ',');
}

参考这里。

另一个聪明的方法是:

1
2
3
4
foreach($results as $result){
  echo ($passed ? ',' : '') . $result->name;
  $passed = true;
}

在这种情况下,在第一环$passedNULL,不打印。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$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;
?>

1
2
3
4
5
6
7
8
9
$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;


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

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

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

1
 echo substr($a,1,10000000);

希望这helps。


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

1
2
3
4
5
6
7
8
ob_start();
foreach($results as $result)
{
   echo $result->name.',';
}
$output = ob_get_clean();

echo rtrim($output, ',');

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