0

我尝试了很多变化,但我找不到解决方案。以前的输出是这样的:

  1. 一个字
  2. b字
  3. c字等

我已经更改了部分代码,现在输出是:

一个字| 词 b | c字|

如何删除最后一个分隔符?

代码是:

<div id="right">

        <div id="synonyms">
        <?

        $separator = '<span class="pipe">|</span>';

        $sql = mysql_query("SELECT DISTINCT word, id_word FROM words WHERE word LIKE '$word' ORDER BY word ASC LIMIT 100");
        echo mysql_error();

        while ($row=mysql_fetch_row($sql))
            {
                $word_synonym = $row[0];        
                $id_word_synonym = $row[1];                 


                        $sql2 = mysql_query("SELECT DISTINCT synonym, id_synonym FROM synonyms WHERE id_word = '$id_word_synonym' ORDER BY synonym ASC");
                        echo mysql_error();
                        $num_results =mysql_num_rows($sql2);

                        while ($row=mysql_fetch_row($sql2))
                            {
                            $synonym = $row[0];
                            $id_synonym = $row[1];

                            $synonym2 = str_replace(" ", "+", $synonym);

                            echo "".$separator."<a href=".$site_url."/?word=".$synonym2.">".$synonym."</a>  ";



                            }

            }
        ?>
        </div>

我尝试添加$separator = substr($separator, -1, 0);和许多其他建议,但没有结果。

4

2 回答 2

4

在做这样的事情时,我的偏好是构建一个字符串数组,然后implode在输出最终字符串时使用。这特别有用,因为这样我就可以做其他事情,比如合并组、过滤它们等。

于 2013-02-01T20:32:25.837 回答
0

这是之前发布并删除的,但我认为值得将其作为可选方法包括在内。虽然我更喜欢 Kolink 的方法,但我也使用过这个方法:

使用迭代器 ($i) 来标识第一个(或最后一个)项目。

$i=0;
while ($row = mysql_fetch_row($sql2)) {
  $i++;
  $synonym = $row[0];
  $id_synonym = $row[1];
  $synonym2 = str_replace(" ", "+", $synonym);
  echo ($i>1?$separator:"").'<a href="$site_url/?word=$synonym2">$synonym</a>';
}

不是这个答案的一部分,但这是 Kolink(可以说是更好的)方法的一个例子:

$links=array();

while ($row = mysql_fetch_row($sql2)) {
  $synonym = $row[0];
  $id_synonym = $row[1];
  $synonym2 = str_replace(" ", "+", $synonym);
  $links[]='<a href="$site_url/?word=$synonym2">$synonym</a>';
}

if (!empty($links)) {
  echo implode($separator,$links);
}
于 2013-02-01T20:53:12.667 回答