Autor | Zpráva | ||
---|---|---|---|
Miri Profil * |
#1 · Zasláno: 6. 2. 2012, 09:49:35
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 * |
#3 · Zasláno: 6. 2. 2012, 11:53:58
No s největší pravděpodobností to int nebude, je zde nějaká možnost jak řetězec změnit na int ?
|
||
Ugo Profil |
#4 · Zasláno: 6. 2. 2012, 11:59:46
např. (int)$string či intval($string). Jestli není ale lepší změnit podmínku, ta udělá v podstatě to samé.
|
||
Miri Profil * |
#5 · Zasláno: 6. 2. 2012, 13:11:48
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 |
#6 · Zasláno: 6. 2. 2012, 13:22:40
problém je, že prázdný string se převede na 0, uprav podmínku např. teda přidáním $a!=''
|
||
Časová prodleva: 12 let
|
0