PHP - 在循环中删除最后2个字符

时间:2011-02-01 04:28:03

标签: php

我有以下内容为我产生结果。

foreach($authArray as $key=>$value){
    $query = mysql_query("SELECT * FROM table WHERE id='$value' LIMIT 1");
    $author = mysql_fetch_assoc($query);
    echo $author['fullname'] .', ';
}

它完美地打印出来,除了在最后一次运行中它仍然添加了逗号和空格,有没有办法可以从最后的结果中删除它,所以它:

name, name, name, name

而不是以下

name, name, name, name,

干杯

5 个答案:

答案 0 :(得分:6)

更好的方法是从视图/输出逻辑中分离数据库结果的处理,然后您可以使用implode一起回避问题,以允许PHP加入您的每一个将作者组合成一个字符串,用逗号和空格的分隔符分隔:

// your loop {
  $authors[] = $author['fullname'];
}

// your output
echo implode(', ', $authors);

答案 1 :(得分:2)

只需将数据连接成一个字符串,然后使用

删除最后两个字符

$author['fullname'] = substr($author['fullname'], 0, -2);

请参阅substr http://php.net/manual/en/function.substr.php

的手册

答案 2 :(得分:1)

不是回应每个作者,而是将它们放在一个字符串中,然后简单地使用trim()取下尾随的逗号,最后回显整个字符串。

答案 3 :(得分:1)

这可能会起作用

foreach($authArray as $key=>$value){
    $query = mysql_query("SELECT * FROM table WHERE id='$value' LIMIT 1");
    $author = mysql_fetch_assoc($query);
    //echo $author['fullname'] .', ';
}

$name_count = count($author[]);

for($x=0;$x<$name_count ;$x++){
    if($x == $name_count -1){
        echo $author['fullname'];
    }else{
        echo $author['fullname'].", ";
    }
}

我们的想法是检测最后一个数组索引,以便我们可以在每个名称之后应用除最后一个之外的所有逗号。

答案 4 :(得分:0)

不要在foreach内部回应

$var = '';
foreach($authArray as $key=>$value){
    $query = mysql_query("SELECT * FROM table WHERE id='$value' LIMIT 1");
    $author = mysql_fetch_assoc($query);
    $var .= $author['fullname'] .', ';
}

echo trim($var,', ');