Напишите точку вместо запятой, когда это последний элемент в PHP - PullRequest
3 голосов
/ 13 июля 2011

У меня есть цикл while для написания списка. Мне бы хотелось, чтобы каждый элемент разделялся запятой, но после последней пишите точку, а не кому. Вот мой код

$exec = mysql_query($req);
    while ($row = mysql_fetch_assoc($exec)){
    echo '<strong>'.$row['name'].'</strong>, ';
}

Но я не знаю, как это сделать. Я пытался использовать count () или end (), но ничего из этого не работает. Немного помощи было бы здорово!

Ответы [ 4 ]

7 голосов
/ 13 июля 2011
$html = array();

$exec = mysql_query($req);
while ($row = mysql_fetch_assoc($exec)){
    $html[] = '<strong>' . htmlspecialchars($row['name']) . '</strong>';
    // --------------------^^^^^^^^^^^^^^^^! (1)
}

$html = implode(', ', $html) . '.';

(1) - Никогда выводить данные в HTML, не экранируя их должным образом.

1 голос
/ 13 июля 2011

Попробуйте это:

$exec = mysql_query($req);
$output = array();
while ($row = mysql_fetch_assoc($exec)){
    $output[] = '<strong>'.$row['name'].'</strong>';
}
echo implode(',', $output), '.';
1 голос
/ 13 июля 2011

Мне нравится использовать функцию implode для этого:)

$list = array();
$exec = mysql_query($req);
    while ($row = mysql_fetch_assoc($exec)){
    $list[] = '<strong>'.$row['name'].'</strong>';
}
$string = implode(", " , $list);
echo $string . ".";

НТН

0 голосов
/ 13 июля 2011

Создайте строку, но не выводите. Затем обрежьте команду и добавьте точку полного останова:

$exec = mysql_query($req);
$output = "";

while ($row = mysql_fetch_assoc($exec))
{
    $output .= '<strong>'.htmlentities($row['name']).'</strong>, ';
}

if($output) echo rtrim($output, ', ').".";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...