从foreach循环中删除最后一个逗号

Cec*_*cil 22 php

我使用foreach循环来回显我的数据库中的一些值,如果有意义,我需要从最后一个循环中删除最后一个逗号.

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

foreach($results as $result){
  echo $result->name.',';
}
Run Code Online (Sandbox Code Playgroud)

哪个回声

result,result,result,result,
Run Code Online (Sandbox Code Playgroud)

我只需要杀掉那个讨厌的最后一个逗号.

任何帮助都会很棒:)

干杯

Lel*_*mbo 107

更好:

$resultstr = array();
foreach ($results as $result) {
  $resultstr[] = $result->name;
}
echo implode(",",$resultstr);
Run Code Online (Sandbox Code Playgroud)

  • +1这当然似乎是解决这个问题的正确方法.应该是接受的答案. (4认同)

Gla*_*vić 24

1. Concat到字符串但|之前添加

$s = '';
foreach ($results as $result) { 
    if ($s) $s .= '|';
    $s .= $result->name; 
}
echo $s;
Run Code Online (Sandbox Code Playgroud)

demo

2. |仅在不是最后一项时才回显

$s = '';
$n = count($results);
foreach ($results as $i => $result) { 
    $s .= $result->name;
    if (($i+1) != $n) $s .= '|';
}
echo $s;
Run Code Online (Sandbox Code Playgroud)

demo

3.加载到阵列然后内爆

$s = array();
foreach ($results as $result) { 
    $s[] = $result->name;
}
echo implode('|', $s);
Run Code Online (Sandbox Code Playgroud)

demo

4. Concat to string然后切断|(或者rtrim它)

$s = '';
foreach ($results as $result) { 
    $s .= $result->name . '|';
}
echo substr($s, 0, -1); # or # echo rtrim($s, '|');
Run Code Online (Sandbox Code Playgroud)

demo

5.使用Concat字符串 array_map()

echo implode('|', array_map(function($result) { return $result->name; }, $results));
Run Code Online (Sandbox Code Playgroud)

demo


Mik*_*ike 13

$result_names = '';
foreach($results as $result){
    $result_names .= $result->name.',';
}
echo rtrim($result_names, ',');
Run Code Online (Sandbox Code Playgroud)


sha*_*mar -11

首先使用输出缓冲获取所有输出。然后,修剪逗号并显示它。所以,这样做:

ob_start();
foreach($results as $result)
{
   echo $result->name.',';
}
$output = ob_get_clean();

echo rtrim($output, ',');
Run Code Online (Sandbox Code Playgroud)

如果内部循环非常大(并且 OP 在此发布只是为了简洁起见),则输出缓冲方法会有所帮助,然后使用 OB 会更容易,而无需更改循环的内部结构。

  • 不需要OB,只需构建一个字符串,修剪然后回显即可。 (9认同)
  • @BoltClock:是的,但是如果内部循环非常大(OP 在这里发布只是为了简洁),那么使用 OB 会更容易,而无需更改内部结构。感谢您的+1。 (2认同)