Nie napisałeś, co robi (co zwraca funkcja mail). Trudno cokolwiek wywróżyć, aczkolwiek da się.
Edit: @Arkadiusz Waluk, dzięki za zwrócenie uwagi.
Edit: Użyłeś funkcji wbudowanej, więc funkcja jeśli mail został dostarczony zwraca TRUE, w innych przypadkach zwraca FALSE.
Gdybyś napisał własną funkcję to byłoby to mniej więcej tak:
Gdy będzie 1 lub true wykona się pierwszy warunek, gdy będzie 0 lub false wykona się następny, krótki przykład:
<?php
function counting($a,$b){
return pow($a,$b);
}
if(counting(5,4)) {
echo 'Query is executed.';
}else{
echo 'Query is not executed.';
}
?>
Jeżeli funkcja counting zwróci true lub 1, to wykona się pierwsze echo, gdy zwróci ta funkcja false lub 0 to wykona się drugie echo.
Ta funkcja zwraca true, bo w tym przykładzie są dwie liczby typu całkowitoliczbowego, a chodzi oto, aby w funkcji były liczby, nie łańcuchy tekstowe (strings).
Natomiast dla string'a, funkcja zwróci wartość false i wykona się drugie echo. Dzieje się tak, dlatego, że funkcja pow może jako argumenty przyjąć tylko liczby, a nie łańcuchy znaków.
Dla counting('a',5'), zwróci false, bo pow nie przyjmuje wartości string, tylko int lub float. Dla ('b','b'), też zwróci false. Mam nadzieję, że wiesz już o co chodzi. To co zwraca funkcja jest rozpatrywane i albo przejdzie do następnego warunku albo nie, bo np. wykona się wcześniejszy warunek.
To, co zwraca funkcja sprawdza się za pomocą funkcji var_dump. Przykład:
var_dump(counting(5,5));
Dla tego poniższego przykładu zawsze będzie true, czyli wykona się zawsze pierwsze echo:
<?php
function x(){
return -4534;
}
var_dump(x());
if(x()){
echo 'true';
}else{
echo 'false';
}
?>
Jeśli coś błędnie napisałem, to można to w prosty sposób zweryfikować przyrówując do odpowiedniego typu, np.:
if(x()==true){ /* ... */ }
Przecież ten warunek zawsze będzie prawdziwy, ponieważ jeśli zmienna nie będzie ustawiona to zwróci "undefined variable".
Jeśli zmienna będzie ustawiona to zwróci true, czyli warunek się sprawdzi i zawsze wykona ci pierwszy warunek, pierwszego if.