PHP foreach - 将每个循环以逗号分隔,除了最后一个元素

3
以下是我的翻译:

这是我的意思:

foreach ($array as $a) {
 echo $a.',<br/>';
}

当前输出结果如下:

a,
a,
a,
a,

我希望输出的结果是这样的:
a,
a,
a,
a

将所有的'a'用逗号分隔,当到达最后一个循环时不写逗号。


1
使用 echo implode(",<br />",$array) - Baba
你是否也想要 <br/> 但是没有逗号? - Daniel Williams
6个回答

11

试试这个:

echo implode(",<br/>", $array);

3
如果数组长度太大或者您有多维数组,请使用以下代码。
<?php $len=count($array);
    foreach($array as $a){ 
        echo $a; 
        if( $len > 1) echo ','; 
        $len--;
 } ?>

2
如果您还想将数组中的换行符转换为<br />,这可能是理想的,特别是在输出时:
echo nl2br(implode(',' . PHP_EOL, $array));

为什么要使用trim()和nl2br(),而不是直接使用implode()和<br/>? - periklis
nl2br因为我喜欢代码看起来好看--我不知道为什么还要用trim。此外,它会将数组中的任何新行转换,这可能是您想要的。 - Michael
1
@MichaelRushton:这不仅看起来不好,而且会增加很大的负载和BUG。如果$array的值中有换行符,它们现在几乎都被转换为<br>,因此您的代码与问题的原始代码不完全相同。(尽管我承认您可能对他的编码意图是正确的。) - Levente Pánczél
我应该添加一条注释来澄清我所做的假设。 - Michael

1
没人说过你可以这样做:
foreach($array as $element) { 
    $separator = ($element != end($array)) ? ",<br />" : '';
// or $separator = ($element == end($array)) ? '' : ",<br />";   
    echo $element.$separator;
}

我想这将会输出你希望的内容。


1

PHP有implode函数可以实现这个功能:

 implode(",<br>", $array);

0

除了一种情况,你应该使用implode

如果输出很大,并且在发送到输出之前不想将其保存在内存中(例如逐个处理),那么你应该做如下操作:

$remain=count($array);
foreach ($array as $a) {
    echo $a;
    if($remain-->0) echo ',';
    echo '<br/>';
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接