php - Unexpected behaviour of Intval -


this question has answer here:

here, $username userinput, , trying check if entry username, or userid (all integers)

i thought use intval function see if $username , intval($username) same, means input userid.

the input gave google. , intval('google') 0. why true part of if statement executed? idea?

i amnt using === because userinput string.

if($username == intval($username))     {      echo "userid";     }     else     {     echo "username";     } 

not sure why unexpected behaviour happening.

it happening because of conversion & type juggling of comparison operators.

intval('anystring') 0.

and when string getting compared converted numeric value. when string converted 0.

if compare number string or comparison involves numerical strings, each string converted number , comparison performed numerically. these rules apply switch statement. type conversion not take place when comparison === or !== involves comparing type value.

so in case 'google1' == intval('google') 0 == 0 , true. type of comparison use identical(===) comparison.

comparison


Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

javascript - Complex json ng-repeat -

jquery - Cloning of rows and columns from the old table into the new with colSpan and rowSpan -