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
kulczycki
post
Post #2





Grupa: Zarejestrowani
Postów: 76
Pomógł: 8
Dołączył: 10.11.2010
Skąd: Polska,Katowice

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


1. co do exception, po co on ?. Od tej funkcji nie zależy działanie całego serwisu, a tylko przypisanie rangi danemu użytkownikowi. Jeśli nie ma x przedziału to po prostu ustawia najbardziej bliską, a jeśli dalej nie może ustawić to wywala pusty albo "No range" - to przecież tylko tekst o range.

2. Cozin twoja pierwsza wersja była dobra ale trzeba lekko dopracować. I ta ostatnia to samo. Bo jeśli ostatnia ranga się gdzieś kończy to przecież nie odbierzesz rangi użytkownikowi tylko dlatego że ma więcej punktów (IMG:style_emoticons/default/winksmiley.jpg)

Może takie niechlujstwo ale trudno:

  1. function getRange($userRange) {
  2. static $ranges = array(
  3. 'Początkujący' => array(0, 3999),
  4. 'Doświadczony' => array(4000, 7999),
  5. 'Młodzian' => array(8000, 11999),
  6. 'Weteran' => array(12000, 20000)
  7. );
  8.  
  9. $max = count($ranges);
  10. $i = 0;
  11.  
  12. foreach ($ranges as $label => $range) {
  13. if($i == $max-1)
  14. if($userRange >= $range[1])
  15. return $label;
  16.  
  17. if ($userRange >= $range[0] && $userRange <= $range[1]) {
  18. return $label;
  19. }
  20.  
  21. $i++;
  22. }
  23.  
  24. return "No range";
  25. }
  26.  
  27. echo getRange(50);
  28. echo getRange(5000000000000000);
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: 5.10.2025 - 18:06