Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]If, switch czy tablica? Co najlepsze?
--Pytalski--
post
Post #1





Goście







Hej.

W bazie mam pola np. plec, ranga, status o wartościach liczbowych.

0 - mężczyzna
1 - kobieta

0 - użytkownik
1 - moderator
2 - vip
3 - admin

0 - online
1 - offline

I mam pytanie, co lepiej zastosować, gdy chce to wyświetlić?

a.) if?
  1.  
  2. if($user['plec'] == 0){
  3. echo 'Mężczyzna';
  4. }
  5. else{
  6. echo 'Kobieta';
  7. }


b.) switch?
  1. switch($user['plec']){
  2. case 0: echo 'Mężczyzna';
  3. break;
  4. default: echo 'Kobieta';
  5. break;
  6. }


c.) tablice?
  1.  
  2. $plec = array('Mężczyzna', 'Kobieta');
  3.  
  4. echo $plec[$user['plec']];




Tablice są dla mnie najwygodniejsze, ale jeśli jest to mało optymalne to podziękuje.

Na stronie z profilem użytkownika muszę wyświetlić ok. 7 takich informacji, które w bazie mają wartości liczbowe.
Go to the top of the page
+Quote Post
lobopol
post
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Tablica, nie wiem jak z wydajnością, ale jeżeli nie będziesz wyświetlał tysięcy użytkowników naraz to nie zauważysz różnicy. Choć wydaje mi się, że tablica byłaby najszybsza. Czemu w bazie nie trzymasz wartości w polu typu enum? Wielkościowo i szybkościowo przy takiej liczbie możliwości by się nie różniło.


--------------------
Go to the top of the page
+Quote Post
wiewiorek
post
Post #3





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


No bez jaj - pytasz o wydajność czegoś takiego? Używaj czego chcesz - trudno w tym wypadku mówić w ogóle o wydajności i przewagi jednego rozwiązania nad innym - lol. tongue.gif
Go to the top of the page
+Quote Post
ethann
post
Post #4





Grupa: Zarejestrowani
Postów: 56
Pomógł: 18
Dołączył: 7.04.2012

Ostrzeżenie: (0%)
-----


Tablica jest dosyć dobrym rozwiązaniem kiedy korzystał będziesz z tego w różnych miejscach, wtedy nie musisz za każdym razem deklarować tych dwóch tekstów.
A najczytelniejszym rozwiązaniem będzie moim zdaniem skrócona forma if'a.
  1. echo ($user['plec']? "Kobieta": "Mężczyzna");

Oczywiście to tylko kiedy korzystasz z dwóch wyników. W przypadku rangi o wiele wygodniej będzie skorzystać z tablicy jeśli będziesz jedynie wyświetlał jej nazwę.
  1. $rangi = array("Użytkownik", "Moderator", "VIP", "Admin");
  2. echo $rangi[$user['ranga']];

Kiedy jednak zdecydujesz się na podjęcie jeszcze innych kroków odnośnie rang to wygodniej będzie zastosować switch, żeby za każdym razem nie powtarzać if($a==1); else if($a==2); [...].
  1. switch($user['ranga']) {
  2. case 0: //Użytkownik
  3. ShowStatistics();
  4. echo "Użytkownik";
  5. break;
  6. case 1: //Moderator
  7. ShowAllowedModThreads();
  8. echo "Moderator";
  9. break;
  10. case 2: //VIP
  11. ShowVIPStatistics();
  12. echo "VIP";
  13. break;
  14. case 3: //Admin
  15. echo "Admin<br />Informacje zablokowane.";
  16. break;
  17. }
Go to the top of the page
+Quote Post
bastard13
post
Post #5





Grupa: Zarejestrowani
Postów: 664
Pomógł: 169
Dołączył: 8.01.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A nie można było tak enumów do bazy wrzucić?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:02