Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Liczba spełniająca warunki
Forum PHP.pl > Forum > Przedszkole
Daiszman
czy ktoś może mnie oświecić
Mam liczbę $interval musi ona spełnić warunki że jest miedzy np -1 a -10 oraz jest przypisana do $doc = P

  1. if($interval >= 0 && $doc['progress'] === "P") { echo'<div ><img src="ikony/1.png" width="15px" hight="15px";></div>';
  2. } elseif($interval <= -1 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/2.png" width="15px" hight="15px";>'.$interval.'</div>';
  3. } elseif($interval <= -10 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/3.png" width="15px" hight="15px";>'.$interval.'</div>';
  4. } elseif($interval <= -15 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/4.png" width="15px" hight="15px";>'.$interval.'</div>';
  5. } elseif($interval <= -20 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/5.png" width="15px" hight="15px";>'.$interval.'</div>';
  6. } elseif($interval <= -45 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/6.png" width="15px" hight="15px";>'.$interval.'</div>';
  7. } else echo '<div>N/A</div>';


chciałem dać elseif($interval <= -15 && $interval >=-10 && $doc === "P" ale wysypuje
co robie źle bardzo źle , moja wina?
trueblue
  1. $doc['progress'] === "P"


  1. $doc === "P"


Po poprawieniu warto sprawdzić jakie wartości faktycznie mają zmienne (w tym $interval).
nospor
Procz tego co napisal trueblue to klania sie jeszcze prosta logika

Przeciez to
} elseif($interval <= -1 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/2.png" width="15px" hight="15px";>'.$interval.'</div>';
} elseif($interval <= -10 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/3.png" width="15px" hight="15px";>'.$interval.'</div>';
} elseif($interval <= -15 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/4.png" width="15px" hight="15px";>'.$interval.'</div>';
} elseif($interval <= -20 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/5.png" width="15px" hight="15px";>'.$interval.'</div>';
} elseif($interval <= -45 && $doc === "P") { echo'<div class="zegar" ><img src="ikony/6.png" width="15px" hight="15px";>'.$interval.'</div>';
nie ma zadnego sensu.

Zalozmy ze $interval wynosi -50. Zakladam, ze bys chcial by sie wyswietlil ostatni IF, ale wyswietli sie juz pierwszy IF z tej listy bo -50 jest tez mniejsze od -1/ Czyli generalnie zaden z IFow procz tego pierwszego nigdy sie nie zalapie wink.gif
Daiszman
Cytat(trueblue @ 9.03.2020, 10:46:07 ) *
  1. $doc['progress'] === "P"


  1. $doc === "P"


Po poprawieniu warto sprawdzić jakie wartości faktycznie mają zmienne (w tym $interval).


przybiera poprawnie

brakuje mi tej prostej logiki :|
kreatiff
Musisz sprawdzać warunki w odwrotnej kolejności, bo tak jak pisze nospor, jeśli $interval spełnia np. ostatni warunek to spełnia też każdy poprzedni, w tym ten pierwszy i na nim właśnie skończy się przyrównywanie. Czyli nigdy do tych kolejnych warunków nie dojdzie.
  1. $html = '<div>N/A</div>';
  2.  
  3. if ($doc === 'P') {
  4. $class = ' class="zegar"';
  5. if ($interval <= -45) $ikona = 6;
  6. elseif ($interval <= -20) $ikona = 5;
  7. elseif ($interval <= -15) $ikona = 4;
  8. elseif ($interval <= -10) $ikona = 3;
  9. elseif ($interval <= -1) $ikona = 2;
  10. else {
  11. $ikona = 1;
  12. $class = '';
  13. $interval = '';
  14. }
  15.  
  16. $html = sprintf('<div%s><img src="ikony/%d.png" width="15px" hight="15px";>%s</div>', $class, $ikona, $interval);
  17. }
  18.  
  19. echo $html;
vokiel
Przy takiej ilości if/else warto by było dla czytelności zamienić to na switch/case.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.