php - 意外转换为 bool 值?

标签 php syntax php-5.3

鉴于此输入:http://example.com/item.php?room=248&supply_id=18823 ,以下 2 个 block 应该产生相同的结果。他们为什么不呢?除了咖啡,我还缺少什么?

此 block 给出预期值:

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
}

但是,如果我一步完成检查和赋值,$id 最终等于 1 而不是 18823。为什么?

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
}

这是我正在使用的函数:

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

最佳答案

你应该使用括号:

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

否则 validkey($_GET['supply_id']) && $room=validkey($_GET['room']) 的结果被分配给 $id变量,因为 && 运算符的优先级高于 =

关于php - 意外转换为 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091986/

相关文章:

c - C中实现结构的动态分配

python - 是否有一种标准化的方法可以在 Python 中交换两个变量?

linux - php网站+linux的独立文件服务器

php - 使用递归方法将json转换为数组?

php - 按步骤逻辑进行测验算法

php - Laravel 5 模拟 PasswordBroker

php - 这段代码中的变量是否正确转义?

php - 最佳实践 : Tracking Banner Impressions

javascript - 自动刷新 Controller 和 View Yii

html - 为原子中的结束标记设置颜色