关于php如何表现的简单问题:
getColor是Circle类的函数,它返回false或者以颜色作为属性的对象.如果我做:
$res=$circle->getColor();
if ($res && $res->color=='white')
{
echo "ok";
} else {
echo "no";
}
Run Code Online (Sandbox Code Playgroud)
我得到"好",但如果我这样做
if ($res=$circle->getColor() && $res->color=='white')
{
echo "ok";
} else {
echo "no";
}
Run Code Online (Sandbox Code Playgroud)
我得到"不".为什么?我认为首先执行条件.不是吗?
由于运算符优先级.因为&&优先级高于=PHP,所以看到这个:
if ($res = ($circle->getColor() && $res->color=='white'))
Run Code Online (Sandbox Code Playgroud)
为了获得您想要的行为,您应该将第一个条件括起来:
if (($res = $circle->getColor()) && $res->color == 'white')
Run Code Online (Sandbox Code Playgroud)