Autor Zpráva
Mesiah
Profil
zdravicko, mam fci na testovani, zda je zadana hodnota cislo, ale nefunguje u nuly.

function JenCisla($vstup)
{
    if ( is_numeric(trim($vstup)) || $vstup == "0" )
    {
        return $vstup;
    }
    else
    {
        return false;
    }
}


k testovani pouzivam script:
if ( JenCisla(0) )
    echo "0 - projde<br>";
else
    echo "0 - NEprojde<br>";

if ( JenCisla("0") )
    echo "napsaná 0 - projde<br>";
else
    echo "napsaná 0 - NEprojde<br>";

if ( JenCisla('0') )
    echo "napsaná 0 - projde<br>";
else
    echo "napsaná 0 - NEprojde<br>";

$cislo = 0;
if ( JenCisla($cislo) )
    echo "promenna 0 - projde<br>";
else
    echo "promenna 0 - NEprojde<br>";


ale vraci jen:
0 - NEprojde
napsaná 0 - NEprojde
napsaná 0 - NEprojde
promenna 0 - NEprojde

nejake napady? :(
SwimX
Profil
Mesiah:
a nějaký důvod proč neudělat:
if ( is_numeric(0) )
    echo "0 - projde<br>";
else
    echo "0 - NEprojde<br>";
?

jinak
k testovani pouzivam script:
je nesmyslné, to první uplně stačí
Joker
Profil
Mesiah:
Hehe, pěkná nachytávka :)

Nula tou funkcí projde správně, ale co v tom případě udělá ta funkce? Vrátí vstup, tj. nulu. Ta je pak použitá v if jako bool, takže se automaticky konvertuje na false.

Co takhle?
if ( JenCisla(0) === false)
    echo "0 - projde<br>";
else
    echo "0 - NEprojde<br>";
Mesiah
Profil
SwimX
bo puvodne jsem mel tu fci na testovani napsanou jinak, ale byla to blbost, tak jsem to predelal a byl jsem tak liny to vsude prepisovat, ze jsem se rozhodl nechat to tak a jen prepsat puvodni fci JenCisla; mno ale ted na to dojizdim :))
Joker
hh, jn dobre jsem si na*ral do gatí :-D
Majkl578
Profil
a nejaky duvod proc neudelat:
function numbersOnly($input)
{
  return preg_match('~^[0-9]+$~', $input) ? (int) $input : null;
}

?

mmj, pres is_numeric projde i float, coz si myslim, ze tady neni zadouci (pokud se pletu, staci nahradit ~^[0-9]+$~ za ~^[0-9]+(?:\.[0-9]+)?$~

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0