Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] if w pętli while
Forum PHP.pl > Forum > Przedszkole
amii
Jest to kawałek kodu skryptu wirtualnego alkomatu. Mam taki problem chce zawrzeć kilka warunków if w pętli while, jednak taka instrukcja nie działa w skrypcie, konkretnie chodzi o fragment kodu dla zmiennej if ($zoladek == "pelny") gdzie są wprowadzone 4 warunki dla pozostałych zmiennych skrypt działa prawidłowo. Konkretnie chodzi mi o to aby od wartości zmiennej $index uzależnić sposób obliczania

  1. while (($promile3 >= 0 && $promile3 < 7) || ($promile3 < 7 && $czas0 <= $czaspicia)) {
  2. if ($czaspicia == 0) {
  3. $czaspicia = 0.1;
  4. }
  5. $t = ($czas0 - $wspzol) / $czaspicia;
  6. if ($t > 1) {
  7. $t = 1;
  8. }
  9.  
  10. if ($zoladek == "pusty") {
  11. if ($index <= 0) {
  12. $promile3 = ($a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2)/1.15;
  13. }
  14. if ($index > 0) {
  15. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2;
  16. }
  17. }
  18.  
  19.  
  20.  
  21. if ($zoladek == "pelny1/2") {
  22. if ($index <= 0) {
  23. $promile3 = ($a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2)/2.4;
  24. }
  25. if ($index > 0) {
  26. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2;
  27. }
  28. }
  29.  
  30.  
  31. if ($zoladek == "pelny") {
  32. if ($index==0) {
  33. $promile3 = ($a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2)/14;
  34. }
  35. elseif ($index==1) {
  36. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2/2;
  37. }
  38. elseif ($index==2) {
  39. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2/1.5;
  40. }
  41. elseif ($index==3) {
  42. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2/1.15;
  43. }
  44. elseif ($index) {
  45. $promile3 = $a * $t * $wspzol2 - (( 0.14 - $wspwagwzr ) * ($czas0 - $wspzol)) * $wspzol2;
  46. }
  47. }
  48.  
  49. if ($czaspicia == 0.1) {
  50. $czaspicia = 0;
  51. }
  52. if ( $czas0 - $czaspicia > 0) {
  53. $czasodkonca = $czas0 - $czaspicia;
  54. } else {
  55. $czasodkonca = "--";
  56. }
  57. $godzina1 = $godzina + $czas0;
  58.  
  59. while ($godzina1 >= 24) {
  60. $godzina1 = $godzina1 - 24;
  61. }
  62. $promile3wsw = round($promile3, 2);
  63. if ($promile3 > 0 && $promile3 <= 7) {
  64. $returned .= "promile$index=$promile3wsw&";
  65. }
  66. if ($promile3 <= 0) {
  67. $returned .= "promile$index=0.00&";
  68. }
  69. if ($promile3 > 7) {
  70. $returned .= "promile$index=zgon&";
  71. }
  72. $czas0 = $czas0 + 0.5;
  73. $index++;
  74. }
nospor
po pierwsze:
if ($index <= 0) {
.....
}
if ($index > 0) {
......
}
to sie robi tak
if ($index <= 0) {
.....
}
else{
......
}

po drugie;
elseif ($index) - czemu to ma sluzyc? Czemu nie dales po prostu: else ?
vokiel
Tam gdzie masz:
  1. if ($zoladek == "pusty") {}
  2. if ($zoladek == "pelny1/2") {}
  3. //czemu nie zrobisz w stylu
  4. if ($zoladek == "pusty") {}
  5. elseif ($zoladek == "pelny1/2") {}

Przecież te opcje się wykluczają, po co męczyć parser sprawdzaniem kolejnych warunków, które nie mają szansy być spełnione?

Cytat(nospor @ 31.08.2009, 09:20:27 ) *
po drugie;
elseif ($index) - czemu to ma sluzyc? Czemu nie dales po prostu: else ?

Może chce sprawdzić, czy w ogóle index jest podany :->
nospor
Cytat
Może chce sprawdzić, czy w ogóle index jest podany :->
No ale przeczytaj calosc a nie ograniczasz sie do mojego cytatu... PRzeciez jak $index nie bedzie podany to mu sie wykona
if ($index==0)
tongue.gif
vokiel
Index może być też ujemny:
  1. $index = -1;
  2. if ($index==0) {
  3. echo 'index - zero';
  4. }elseif ($index){
  5. echo 'index - true';
  6. }else{
  7. echo 'index - no';
  8. }
nospor
  1. $zm = 3;
  2. if ($zm) echo 'ok 3';
  3. $zm = -3;
  4. if ($zm) echo 'ok -3';

No i to tyle w temacie
@vokiel coś ostatnio piszesz jakbyś był trochę niewyspany winksmiley.jpg

ps: napisałes taki fajny skrypt. mogles chociaz sprawdzic co ci zwroci..... tongue.gif
vokiel
@nospor poniedziałek, po 3 dniach prób zamykania krzaka, może być;)
A może, ja mam inne PHP ohmy.gif


PHP: converting to boolean
Cytat
var_dump((bool) -2); // bool(true)
nospor
Cytat
var_dump((bool) -2); // bool(true)
no dokladnie.

czyli twoj kod
elseif($index)
...
else
....

nie dojdzie do else dla $index ujemnej gdy zadziala juz elseif(index). bez sensu jest wiec pisac tak, wystarczy wiec juz sam jeden
else

Cały czas to mowie, a ty ciagle cos innego smile.gif

Twoj kod tez zwroci: index - true
czyli nie dojdzie do else. rozumiesz?
vokiel
sciana.gif sciana.gif sciana.gif
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.