Wątek zablokowany 2014-10-17 08:59 przez dzek69.

Wątek przeniesiony 2014-06-08 13:25 z PHP przez dzek69.

Ostrzeżenie w funkcji

0

Mam taki problem pisze skrypt, a nie chcę, żeby było w nim żadnych wariningów, a one są dotyczą konkretnie tego kodu.

  function oblicz_cene($cena) {
    $cena = (string) $cena;
    $cena2 = explode(".",$cena);
    $cena3 = $cena2[1]; //to jest ta linia
    if ($cena3 < 10) {
      $cena3 .=  "0";
    }
    else {
      $cena3 = substr($cena2[1],0,2);
    }
    //$cena3 = (string) $cena3;
    if ($cena3 < 10) {
      $cena3 = str_replace("0","",$cena3);
    }
    if ($cena < 1) {
      return $cena3 . " Gr";
    }
    
    if ($cena2[1] == 0) { //i ta linia
      return $cena2[0] . " zł";
    }
    else {
      return $cena2[0] . " zł i " . $cena3 . " gr";
    }

  } 

Są dwa ostrzeżenia i intepreter wypluwa do pliku taki coś
PHP Notice: Undefined offset: 1 in jest to linia w komentarzach zobaczycie.
Oczywiście cel tej funkcji to zamiana przykładowo 4.50 na 4 zł i 50 gr i ta funkcja ma taką obsługę błędów jak np. 4.05 to będzie nie 05 gr tylko 5 gr.

0
tomi0001 napisał(a):

Mam taki problem pisze skrypt, a nie chcę, żeby było w nim żadnych wariningów, a one są dotyczą konkretnie tego kodu.

 
    $cena3 = $cena2[1]; //to jest ta linia

Interpreter wypluwa ci ze element o indeksie jeden nie istnieje w tablicy, czyli linijka wczesniej funkcja explodenie rozdziela stringa za pomoca kropki bo pewnie jej tam nie ma gdyz twoja cena jest rozdzeilona przecinkiem (np. 42,50) lub jest w pelnych zlotowkach (np. 53).

zrob sobie

print $cena;

lub var_dump i zobacz co zwraca

0

przed operacjami na liczbie, znormalizuj ją do postaci ceny, korzystając z funkcji money_format()

echo money_format('%i', 10.5); //'10.50'
echo money_format('%i', 0.5); //'0.50'
echo money_format('%i', 10); //'10.00'

dodanie znacznika <code class="php"> - furious programming

1 użytkowników online, w tym zalogowanych: 0, gości: 1