Autor Zpráva
Miri
Profil *
Ahoj, potřeboval bych poradit s jednoduchou podmínkou ale nemůžu přijít na chybu.. nejspíš je někde chyba v určení datového typu, ale nejsem si jisty. tady přikládám php kod
$a = 0 nebo $a = 1 ....

if ($a or ($a===0)){ ....

Podmínka mi funguje pokud proměnná "a" nabývá jakoukoliv hodnotu, ale když dám "a" rovno 0, tak se mi podmínka neprovede.

Předem děkuji za radu/opravu
Míra
DJ Miky
Profil
Záleží, co přesně přiřazuješ, není 0 (celé číslo) jako '0' (řetězec s jedním znakem). Rovností ($a == 0) projde cokoliv vypadající jako nula, např. 0, "", "0", false, prázdné pole array() apod. Ekvivalencí ($a === 0) projde pouze číslo, tedy 0.
$a = '0';

if($a === 0) // neprojde
if($a == 0) // projde

$a = 0;

if($a === 0) // projde

Pokud si nejseš jistý, jakého typu je proměnná $a, můžeš si ji nechat vypsat: var_dump($a); ti vypíše hodnotu i s datovým typem (int = celé číslo, string = řetězec apod.).
Miri
Profil *
No s největší pravděpodobností to int nebude, je zde nějaká možnost jak řetězec změnit na int ?
Ugo
Profil
např. (int)$string či intval($string). Jestli není ale lepší změnit podmínku, ta udělá v podstatě to samé.
Miri
Profil *
Když já nezměním to že vstup bude $a='0'; takže potřebuju podmínkou zjistit že $a je rovna nule ale nechci když je to prázdný string, takže nejlepší bude to změnit na int..
Ugo
Profil
problém je, že prázdný string se převede na 0, uprav podmínku např. teda přidáním $a!=''

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