0

たくさんのバリエーションを試しましたが、解決策が見つかりません。以前の出力は次のようでした。

  1. 単語
  2. 単語b
  3. 単語 c など

コードの一部を変更したところ、出力は次のようになりました。

単語 a | 単語 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 に答える