Php逻辑表达式和对象
我有点奇怪 代码1:Php逻辑表达式和对象,php,object,logic,Php,Object,Logic,我有点奇怪 代码1: if($city = Cities::find_by_id($city_id)) { var_dump($city); } 返回:object(Cities)#6(7){…},普通 代码2: if($city = Cities::find_by_id($city_id) && $building = Buildings::find_by_id($building_id)) { var_dump($city); } 这将返回:bool(tr
if($city = Cities::find_by_id($city_id)) {
var_dump($city);
}
返回:object(Cities)#6(7){…},普通
代码2:
if($city = Cities::find_by_id($city_id) && $building = Buildings::find_by_id($building_id)) {
var_dump($city);
}
这将返回:bool(true),我期望得到与之前一样的结果
有人能给我解释一下发生了什么吗?这里发生的是,在第一种情况下,您只是将函数返回值赋给变量$city
$city = Cities::find_by_id($city_id)
结果和你们期望的差不多。对于第二种情况,您正在做一些不同的事情-您正在分配
Cities::find_by_id($city_id) && $building = Buildings::find_by_id($building_id)
对于变量$city,这意味着如果Cities::find_by_id和Buildings::find_by_id都返回stdObjects,则应用逻辑和运算符
有点像:
$city = (object) && (object)
这和
$city = true && true
您可能希望执行类似操作(请参见附加括号):
$var=Object
将Object赋值给$var
,但$var=Object&&Object
将布尔值赋值给Object&&Object
if(($city = Cities::find_by_id($city_id)) && ($building = Buildings::find_by_id($building_id))) {
var_dump($city);
}