Autor Zpráva
Matěj Hofman
Profil
Dobrý den, potřebuji zjistit jestli uživatel zadal číslo, jestli je číslo kladné a jestli se jedná o celé číslo.


//pokud se jedná o číslo
if ($cislo*1 == $cislo){
  
  //pokud je číslo kladné
  if ($cislo >= 0) {

    //pokud se jedná o celé číslo - nemohu přijít na to, jak to vyřešit
    
    
}else echo"zadejte kladné číslo";
}else echo"zadejte číslo";


Toto je moje řešení, pokud víte o lepším, prosím poraďte. Ale hlavně potřebuji vědět, jak zjistím, že se jedná o celé číslo.
Díky za rady.
juriad
Profil
Pomůže ti intval?

Kladné číslo je z matematického pohledu striktně větší než 0. To, co jsi napsal ty, testuje nezapornost čísla.

Také to násobení jedničkou je takové divné. Lepší je testovat pomocí is_numeric.
Chro.
Profil
Je třeba si uvědomit, že vstup z formuláře je v PHP vždy typu string nebo array, ať se jedná o znaky a-z, 0-9, či jejich kombinace nebo znaky jiné. Celé číslo bych kontroloval následovně:
if (!is_array($_POST['vstup']) && ctype_digit($_POST['vstup']))
{
//jsem kladné a celé číslo
}
Projde, příklady: 0, 123, 00456, 321321321321321321

Neprojde, příklady: -0, -13, -96.7, -032, 4.56, 3,14159265
Keeehi
Profil
Kladná celá čísla bych kontroloval regulárem
if(preg_match('~^[1-9]\d*$~', $_POST['vstup'])) {
    //jsem kladné celé číslo
}
Matěj Hofman
Profil
Díky za rady, už to mám :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0