Ben zaten burada bu konuları bir milyon gördüm ve her biri ile okudum. Yani, artı bazı ciddi Googling.
UPDATE: Ben tam kodu ve açıklama eklemek için bu yazı yeniden yaşıyorum, bu yüzden herkes ne olup bittiğini anlar ve yapmak ne çalışıyorum.
Ben CodeIgniter kullanarak geliştiriyorum, bu yüzden onunla aşina değilseniz bazı sözdizimi garip görünebilir.
Ben harfleri A-Z ile bir bağlantı çubuğuna sahip. Fikir belirli bir sütuna (mysql LIKE $letter%
), içeriğin sadece "aktif" harfleri bulmak. Bu bilgi ile ben eğer varsa CSS kullanarak, bazı "boş" harfleri "dim" mümkün olacaktır.
Burada Bu fonksiyon mysql sorgular ve bir sütun girişlerin her biri eşsiz ilk harfini alır. Sonuç 0 26 karşılaşmalar / dizi öğeleri her yerde olmalıdır.
//From am_model.php
function getFirstLetter($domainId)
{
$q = $this->db->query("SELECT DISTINCT LEFT(alias_name, 1)
AS letter
FROM am_aliases
WHERE domain_id = '" . $domainId . "'
ORDER BY alias_name;");
if($q->num_rows > 0):
foreach($q->result() as $row)
{
$result[] = $row;
}
//print_r($result); <-- prints out correct result.
return $result;
endif;
}
Bundan sonra, bir denetleyicisi bu işlevi çağırır:
$foundLetters = $this->am_model->getFirstLetter($domainId);
sonra $alphabet
dizi tanımlamak.
$alphabet = range('a','z');
foreach($alphabet as $letter)
{
if(in_array($letter, $foundLetters, TRUE)):
echo $letter . ' found<br />';
else:
echo $letter . ' not found<br />';
endif;
}
Hiçbir şey karmaşık. Ben yapmam gereken bir döngü içinde bir tek karakter benim alfabe dizisi eşleşirse kontrol etmektir.
As Col. Shrapnel suggested below, I did some debugging, and dump()
of letters from $alphabet and $foundLetters arrays produce different results, so I guess it does point
to possible encoding issues, which I am trying to figure out now...
Herkes oluyor burada ne herhangi bir fikir var mı?
function dump(&$str) {
$i=0;
while (isset($str[$i])) echo strtoupper(dechex(ord($str[$i++])));
}
Buradan sonuç dump()
:
a: $alphabet->61 613C6272202F3E<-$foundLetters
b: $alphabet->62 613C6272202F3E<-$foundLetters
c: $alphabet->63 683C6272202F3E<-$foundLetters
d: $alphabet->64 613C6272202F3E<-$foundLetters
bu:
print_r($alphabet); // all 26 letters
Array (
[0] => a
[1] => b
[2] => c
...
[23] => x
[24] => y
[25] => z
)
print_r($foundLetters); // dynamic array.
Array (
[0] => b
[1] => s
)