Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przypisywanie przedziałom wartości słownej - tablica
pawdoh
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.12.2010

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


Witam mam następujący problem otóż, pobieram z bazy danych wartość będącą liczbą i teraz mam problem ponieważ potrzebuję to przypisać mam kod

  1. <?php
  2. $ranga = (
  3. range(0, 3999) => 'Początkujący',
  4. range(4000, 7999) => 'Młodzian',
  5. range(8000, 11999) => 'Doświadczony',
  6. range(12000, 20000) => 'Weteran',
  7. )
  8. ?>

następnie to przypisuje w pliku do którego załączam tą tablice, $ranga[$r[rank]]. I po tym właśnie zwraca mi błąd

Warning: Illegal offset type in ... on line 3,4,5,6

Bardzo bym prosił o pomoc gdyż jestem początkującym programistą i nie wiem za bardzo gdzie zrobiłem błąd. Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




@Crozin:
ad1) "Zresztą... zawsze, można zamienić znak mniejszości na większości i porównywać minimalny zakres rangi" -> właśnie to zaproponowałem jako lepszy pomysł. Zakres górny w przypadku liczb rosnących jest źródłem potencjalnych błędów w przyszłości.

ad2) Wyjątki także sugerowałem w komentarzach w kodzie, ale zostawiłem wybór. Poza tym dobrze napisany skrypt nie sprawi problemu. Wiesz co dostajesz na wyjściu, co dajesz na wejściu i nie martwisz się logiką biznesową wnętrza. Wyjątki są bardzo zdradliwe. Możesz mieć wszystko cacy i nagle coś sprawi, że poleci wyjątek, a wysypie Ci aplikację z powodu nie przechwyconego fatala. Ty w trakcie testowania nie musiałeś na taką sytuację trafić, ale kto wie co się stanie po pół roku na serwerze produkcyjnym? (IMG:style_emoticons/default/winksmiley.jpg) Użycie false do sygnalizacji błędu jest w takim momencie "bezpieczne", ponieważ większość skryptów, funkcji php-owych false daje domyślnie jako sygnalizację, że coś poszło nie tak i pod tym kątem większość osób testuje returny z funkcji. Owszem, wyjątki są o wiele lepsze do tego celu i dlatego powstały, ale wymaga to przejrzenia kodu aplikacji by wiedzieć gdzie te wyjątki mogą być rzucone, a więc i gdzie je próbować łapać oraz jakiej są klasy, bo przecież wyjątki także podlegają dziedziczeniu, a czasem zależy nam na łapaniu nie wszystkich, ale tylko określonej klasy wyjątków (IMG:style_emoticons/default/smile.gif)

ad3) Chyba lepszym wyjściem niż robić break; byłoby od razu walnięcie return. Wtedy spada konieczność sprawdzania czy userRangelabel jest nullem. Dodatkowo przesłałbym tablicę zakresów jako parametr z tej przyczyny, że wtedy funkcja staje się uniwersalną i możesz ją stosować nie tylko dla rzeczy na sztywno i potem definiować osobną do Postów, osobna do artykułów itp. Po prostu byłaby jakąś w helperze do sprawdzania czy liczba mieści się w określonym zakresie. A więc byłaby bardzo elastyczna.

PS: Popraw też static $ranges na coś innego niż weteran (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 22:57