Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Liczba spełniająca warunki
Daiszman
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

Ostrzeżenie: (10%)
X----


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?

Ten post edytował Daiszman 9.03.2020, 10:45:17
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. $doc['progress'] === "P"


  1. $doc === "P"


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


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





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Daiszman
post
Post #4





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 2.12.2019

Ostrzeżenie: (10%)
X----


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 :|
Go to the top of the page
+Quote Post
kreatiff
post
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


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;
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Przy takiej ilości if/else warto by było dla czytelności zamienić to na switch/case.


--------------------
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: 20.08.2025 - 05:06