Перечисление значений массива в алфавитном порядке с заголовком буквы - PullRequest
2 голосов
/ 18 октября 2011

Мне нужна помощь, чтобы понять это.Я пытаюсь создать функцию, которая выводит значения в массиве в алфавитном порядке, но также отображает заголовок новой буквы после того, как он достигает конца текущей буквы.Пример:

А

Амазон

Америка

В

Багамские острова

Бермудские острова

C

Канада

Камбоджа

И т. Д.

Я могу сделать это, повторив код из "$ result", но я понимаю, что этопросто не очень хорошая практика, поэтому я ищу что-то, что включает переменную вместо «a%» и автоматически увеличивает букву (останавливаясь на Z) после каждого успешного запуска скрипта.

<?php
$username = "myusername";
$password = "mypsswrd";
$hostname = "localhost"; 


$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");


$selected = mysql_select_db("mydb",$dbhandle)
or die("Could not select database");

$result = mysql_query("SELECT user, name FROM users WHERE name like 'a%' ORDER BY name");
echo "A<br />";
while ($row = mysql_fetch_array($result)) {
echo "<a href=\"/artists/artist.php?user=".$row{'user'}."\">".$row{'name'}."</a><br />";
}
echo "<br />";

1 Ответ

6 голосов
/ 18 октября 2011
$result = mysql_query("SELECT user, name FROM users ORDER BY name");
$last = '';

while ($row = mysql_fetch_array($result)) {
    $current = strtolower($row['name'][0]);
    if ($last != $current) {
        echo strtoupper($current) . "<br />";
        $last = $current;
    }
    echo "<a href=\"/artists/artist.php?user=".$row{'user'}."\">".$row{'name'}."</a><br />";
}
...