Php 在IF条件中定义和使用变量

Php 在IF条件中定义和使用变量,php,Php,是否可以在IF条件下定义变量,然后在相同的IF条件下使用该变量?然而,我的测试表明它不可能,为什么它不可能让我逃避。如果是,怎么做?若否,原因为何 function getX(){return 123;} function getY($x){return $x*2;} function getZ($y){return $y*2;} if( true && $x=getX() && $y=getY($x) && $z

是否可以在IF条件下定义变量,然后在相同的IF条件下使用该变量?然而,我的测试表明它不可能,为什么它不可能让我逃避。如果是,怎么做?若否,原因为何

function getX(){return 123;}
function getY($x){return $x*2;}
function getZ($y){return $y*2;}

if(
    true
    && $x=getX()
    && $y=getY($x)
    && $z=getZ($y)
)
    {echo('true '.$x.' '.$y.' '.$z);}
else {echo('false '.$x);}
在条件中添加括号()

function getX(){return 123;}
function getY($x){return $x*2;}
function getZ($y){return $y*2;}

if(
    true
    && ($x = getX())
    && ($y=getY($x))
    && ($z=getZ($y))
)
    {echo('true '.$x.' '.$y.' '.$z);}
else {echo('false '.$x);}

工作3v4l:

您需要将条件中的任务包装到括号中,如下所示:

function getX(){return 123;}
function getY($x){return $x*2;}
function getZ($y){return $y*2;}

if(
    true
    && ($x=getX())
    && ($y=getY($x))
    && ($z=getZ($y))
)
    {echo('true '.$x.' '.$y.' '.$z);}
else {echo('false '.$x);}

希望这有帮助

好消息。你能解释一下没有括号的情况下到底发生了什么吗。很抱歉这篇评论太离谱了。PHP没有编译。他没有质疑“编译器”和“解释器”的用法。你的回答解决了这个问题。你知道这样做的原因吗?如果你想在php解释器上得到完整的文档,你可以在这里找到源代码。对不起,我不知道它是如何完整工作的。我认为它与表达式求值有关。如果你单独尝试一个任务,它应该可以工作,但是一旦你添加了其他任务,口译员就会对你要做的事情感到困惑。如果您想了解此行为的内部结构,即查看php源代码,则需要深入挖掘