php - unexpected cast to boolean? -


given input: http://example.com/item.php?room=248&supply_id=18823, following 2 blocks ought produce same result. why don't they? missing other coffee?

this block gives expected values:

if (isset($_get['supply_id']) && isset($_get['room'])) {     $id=validkey($_get['supply_id']); //18823     $room=validkey($_get['room']); //248     $arr=array('s'=>$id,'r'=>$room); //s=>18823, r=>248 } 

but if check , assignment in 1 step, $id ends equal 1 instead of 18823. why?

if (isset($_get['supply_id']) && isset($_get['room'])) {     if($id=validkey($_get['supply_id']) && $room=validkey($_get['room']))          $arr=array('s'=>$id",'r'=>$room); //s=>1, r=>248 } 

this function i'm using:

function validkey($value){     if(is_scalar($value)){         $value=(int)$value;         return ($value>0) ? $value : false;     }     return false; } 

you should use parentheses:

if(($id=validkey($_get['supply_id'])) && ($room=validkey($_get['room'])))  

otherwise result of validkey($_get['supply_id']) && $room=validkey($_get['room']) assigned $id variable because && operator has higher precedence =


Comments

Popular posts from this blog

linux - Mailx and Gmail nss config dir -

c# - Is it possible to remove an existing registration from Autofac container builder? -

php - Mysql PK and FK char(36) vs int(10) -