PHP 添加逗号和空格,除非 foreach 结束


PHP add comma and space unless end of foreach

我正在使用此代码

<?php
foreach($rows as $row) {
echo "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>, ";
}
?>

问题是逗号和空格(,<space>)甚至被添加到最后一个$row。防止这种情况的最简单方法是什么?我有一个想法来检查数组等的大小,但不确定这是否会使它过于复杂。

你可以

这样做 -

<?php
$links= array();
foreach($rows as $row) {
    $links[]= "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>";
}
echo implode(', ', $links);
?>

<?php
$i = 0;
$total = count($rows);
foreach($rows as $row) {
    echo "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>";
    $i++;
    if($i < $total)
       echo ",";
}
?>

或者RiggsFolly的答案是另一种选择。

有一个更简单的解决方案

<?php
$htm = '';
foreach($rows as $row) {
    $htm .= "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>, ";
}
rtrim($htm,', ');
echo $htm;
?>

如果你想变得复杂,那么你可以做:-

<?php
$crows = count($rows) - 1;
foreach($rows as $i => $row) {
    echo "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>";
    echo ( $crows > $i ) ? ', ' : '';
}
?>

您可以通过两种方式使用字符串来做到这一点:

1) 使用rtrim()

<?php
$str = '';
foreach($rows as $row) {
$str .= "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>, ";
}
echo rtrim($str, ', ');
?>

2)获取链接数组,并按空格和逗号implode()

<?php
$arr = array();
foreach($rows as $row) {
$arr[] =  "<a href=index.html?id=" . $row['id'] . ">" . $row['name'] . "</a>, ";
}
echo implode(', ', $arr);
?>