1

ループ結果を文字列に保存することはできますか?

$sql = "SELECT SUBSTR(a.`title`, 1,1) FROM articles a WHERE a.`tag` = 'human_resources'";
$results = db_query($sql);
  while ($fields = db_fetch_array($results)) {
     foreach($fields as $key => $value) {
       echo $value;
     }
  }

上記のコードは、タグ human_resources を持つ記事のタイトルを出力します。カタログのアルファバーを作成したいので、これを使用しています:

if(stripos($string, "A") !== false) {
    echo ('<a href="http://www.mysite.com/articles/A">A</a>');
}
else echo '<span class="inactive">A</span>';

if(stripos($string, "B") !== false) {
    echo ('<a href="http://www.mysite.com/articles/B">B</a>');
}
else echo '<span class="inactive">B</span>';

...etc

しかし、コードの 2 番目の部分のループからその $string を取得する方法がわかりません。

この問題に対する提案やより良いアプローチは大歓迎です。

4

4 に答える 4

1

あなたが何を望んでいるのか正確にはわかりません...あなたの例を更新して、あなたが持っているものと結果をどうしたいかを示してください。

を使用して値のリストを保存できますarray

$list = array();
for (...) {
    /*
    Some code here...
    */
    // Add the current string to the list.
    $list[] = $string;
}

長い文字列が 1 つだけ必要な場合は、次のように追加できます。

$all = "";
for (...) {
    /*
    Some code here...
    */
    // Add the current string to a string with all the strings concatenated.
    $all .= $string;
}
于 2009-08-05T11:46:15.310 に答える
1

これを変える:

echo $value;

これに:

$string .= $value;
于 2009-08-05T11:47:56.460 に答える
0

他の人が言ったことに加えて、ループを使用してアルファベット順のメニューを表示することをお勧めします。

for ($i = 65; $i < 91; $i++) {
     $letter = chr($i);
     if(stripos($string, $letter) !== false) {
          echo ('<a href="http://www.mysite.com/articles/'.$letter.'">'.$letter.'</a>');
     }
     else echo '<span class="inactive">'.$letter.'</span>';
}

これにより、文字ごとにコードをコピーして貼り付ける必要がなくなります。

于 2009-08-05T11:55:02.420 に答える
0
while ($fields = db_fetch_array($results)) {
     foreach($fields as $key => $value) {
      echo $value;
     }
}

試す

$result = "";
while ($fields = db_fetch_array($results)) {
     foreach($fields as $key => $value) {
      $result = $result . $value;
     }
}
restun $result
于 2009-08-05T11:48:18.643 に答える