Skocz do zawartości

Funkcja z domyślnym parametrem


stat4seo

Rekomendowane odpowiedzi

Cześć

Mamy taką oto funkcję z jednym parametrem, z domyślną wartością:

<?php
function q($parametr = 0)
{
  if($parametr == 0)
  echo 'Tak';
  else
  echo 'Nie';
}
?>

Kto mi teraz wyjaśni, dlaczego taki oto kod:

<?php
q();
q("test");
?>

Zwraca "TakTak" ?

Wiem, że mogę użyć "===" zamiast "==" ale ciekawi mnie czym spowodowane jest takie działanie funkcji....

Pozdrawiam

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

Odpowiedź jest prosta - źle napisałeś kod. Porównujesz integer ze stringiem. PHP wykonało niejawną konwersję stringu na int co daje liczbę 0.

var_dump( (int)"test" ); // pokaze sie cyfra 0

Twój warunek sprawdzający powinien zawierać operator '===' lub (w zależności co chcesz osiągnąć) wyglądać tak:

if(!$parametr)

PS. przy === na początku porównywane są typy danych dlatego program w tym przypadku zadziała prawidłowo.

Sprawdź liderów systemów wymiany linków:

linkme.pl (stały), gotlink.pl (rotacyjny)

alexain.jpgalexaol.jpgalexaat.jpg

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności