php中的多个条件和赋值

de3*_*de3 2 php

关于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)

我得到"不".为什么?我认为首先执行条件.不是吗?

Sea*_*ght 8

由于运算符优先级.因为&&优先级高于=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)