Cześć.
Dziś pokażę jak szybko i optymalnie przypisać ikony dla rang. Użyję do tego przykładu, który ma 3 rangi – Admin, Staff i Member, a ikonki do nich to: tworca.gif, ksieciunio.jpg, mieszczuch.png (Celowo inne nazwy niż same rangi oraz rozszerzenia)
Typowe takie rozwiązanie dla vall to (fragment while, kod został nieco uproszczony) :
while (!$objQuery -> EOF) { if ($objQuery -> fields['rank'] == 'Admin') { $arrplayers[$i] = ' '.$objQuery -> fields['user'].' ('.$objQuery -> fields['id'].') '; } elseif ($objQuery -> fields['rank'] == 'Staff') { $arrplayers[$i] = ' '.$objQuery -> fields['user'].' ('.$objQuery -> fields['id'].') '; } elseif ($objQuery -> fields['rank'] == 'Member') { $arrplayers[$i] = ' '.$objQuery -> fields['user'].' ('.$objQuery -> fields['id'].') '; }
„Lepsza” wersja będzie z wykorzystaniem switch, który spisuje się lepiej przy większej ilości rang (rozwiązanie dobre, gdy w grze jest sporo rang np. fabularnych).
while (!$objQuery -> EOF) { switch ($objQuery -> fields['rank']) { case 'Admin': $icon = 'tworca.gif'; break; case 'Staff': $icon = 'ksieciunio.jpg'; break; case 'Member': $icon = 'mieszczuch.png'; break; } $arrplayers[$i] = ' '.$objQuery -> fields['user'].' ('.$objQuery -> fields['id'].') ';
Natomiast jeszcze „lepsza” i „szybsza” opcja to jest utworzenie tablicy asocjacyjnej PRZED pętlą while:
$arricons = array('Admin' => 'tworca.gif', 'Staff' => 'ksieciunio.jpg', 'Member' => 'mieszczuch.png'); while (!$objQuery -> EOF) { $arrplayers[$i] = ' '.$objQuery -> fields['user'].' ('.$objQuery -> fields['id'].') ';
Przewaga tego ostatniego rozwiązania jest taka że tablica „wykonuje” się tylko raz niezależnie od ilości powtórzeń pętli, co szczególnie dla dużej ilości rang i graczy online daje dość sporo.