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

时间:2016-02-09 11:09:54

标签: php

我正在使用此代码

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

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

3 个答案:

答案 0 :(得分:5)

有一个更简单的解决方案

<?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 :(得分:4)

你可以这样做 -

<?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 的答案是另一种选择。

答案 2 :(得分:1)

您可以通过两种方式使用字符串来完成:

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);
?>