PHP:将零显示为正确的输出

PHP:将零显示为正确的输出,php,Php,我是PHP新手,我很难理解为什么我的代码在echo显示0时无法工作。该代码适用于所有其他情况,但每当随机运算符选择0时,它会输出0负值,当我将其显示为0时。我不知道它为什么这样做,我希望得到任何指导 $randomNumber = rand(-5, 5); $var = $randomNumber; echo $randomNumber; echo $integerValue = (($var === 0) ? " Zero" : ($var <=-1) ? " Negative" : (

我是PHP新手,我很难理解为什么我的代码在echo显示0时无法工作。该代码适用于所有其他情况,但每当随机运算符选择0时,它会输出0负值,当我将其显示为0时。我不知道它为什么这样做,我希望得到任何指导

$randomNumber = rand(-5, 5);
$var = $randomNumber;
echo $randomNumber;
echo $integerValue = (($var === 0) ? " Zero" : ($var <=-1) ? " Negative" : (($var >=1) ? " Positive" : " Not Positive or Zero") );

你不想重复作业。您需要分配值,然后回显它。尝试将最后一行更改为

$integerValue = (($var === 0) ? " Zero" : ($var <=-1) ? " Negative" : (($var >=1) ? " Positive" : " Not Positive or Zero") ); 

你不想重复作业。您需要分配值,然后回显它。尝试将最后一行更改为

$integerValue = (($var === 0) ? " Zero" : ($var <=-1) ? " Negative" : (($var >=1) ? " Positive" : " Not Positive or Zero") ); 

缺少括号:

<?php
$randomNumber = rand(-5, 5);
$var = $randomNumber;
echo $randomNumber;
echo $integerValue = (($var === 0) ? " Zero" : (($var <=-1) ? " Negative" : (($var >=1) ? " Positive" : " Not Positive or Zero") ) );
说明:

(
    ($var === 0) ? " Zero" : (
        ($var <=-1) ? " Negative" : (
            ($var >=1) ? " Positive" : " Not Positive or Zero"
        )
    )
)

缺少括号:

<?php
$randomNumber = rand(-5, 5);
$var = $randomNumber;
echo $randomNumber;
echo $integerValue = (($var === 0) ? " Zero" : (($var <=-1) ? " Negative" : (($var >=1) ? " Positive" : " Not Positive or Zero") ) );
说明:

(
    ($var === 0) ? " Zero" : (
        ($var <=-1) ? " Negative" : (
            ($var >=1) ? " Positive" : " Not Positive or Zero"
        )
    )
)

问题在于PHP三元运算符优先级,与大多数其他语言相比,它的工作方式是向后的:

请尝试最后一行:

echo $integerValue = (($var === 0) ? " Zero" : (($var <=-1) 
                 ? " Negative" : (($var >=1) 
                 ? " Positive" : " Not Positive or Zero") ));

问题在于PHP三元运算符优先级,与大多数其他语言相比,它的工作方式是向后的:

请尝试最后一行:

echo $integerValue = (($var === 0) ? " Zero" : (($var <=-1) 
                 ? " Negative" : (($var >=1) 
                 ? " Positive" : " Not Positive or Zero") ));

您已经有了另一个答案,可以解释为什么没有得到预期的结果,但仅供参考,您的多重三元表达式可以稍微简化

echo $var ? $var > 0 ? ' Positive' : ' Negative' : ' Zero';
如果$var为零,$var将计算为false,因此无需显式地将其与零进行比较,并且最终的非正或零实际上不是一个可能的结果,因为rand的结果将是一个整数,根据定义为正、负或零

括号不是必需的,但它们可以使表达式的作用更加明显

echo $var ? ($var > 0 ? ' Positive' : ' Negative') : ' Zero';

您已经有了另一个答案,可以解释为什么没有得到预期的结果,但仅供参考,您的多重三元表达式可以稍微简化

echo $var ? $var > 0 ? ' Positive' : ' Negative' : ' Zero';
如果$var为零,$var将计算为false,因此无需显式地将其与零进行比较,并且最终的非正或零实际上不是一个可能的结果,因为rand的结果将是一个整数,根据定义为正、负或零

括号不是必需的,但它们可以使表达式的作用更加明显

echo $var ? ($var > 0 ? ' Positive' : ' Negative') : ' Zero';

我尝试了此操作,但未更改“0”的输出。不过,感谢您提供有关更改Echoo的提示哦,对不起,我错过了您的原始版本。你不想让-1和1之间的任何值返回为零吗?像这样:$integerValue=$var<1&$var>-1?零:$var=1?正:非正或零;虽然不正常,但赋值将发生在echo语句之前。因此php将分配$integerValue,然后回显任何值。下面是一个快速演示:。这与$row=mysqli\u fetch时的方式类似。。。在计算任何表达式之前,该行中的工作都将被赋值。我需要输出显示:“0”零-零以下的任何内容为:-1负-零以上的任何内容为:2正,例如,尝试在嵌套的三元运算符周围添加paren,如下所示。这将得到您想要的结果:$integerValue=$var==0?零:$var=1?正:非正或零;我尝试了此操作,但未更改“0”的输出。不过,感谢您提供有关更改Echoo的提示哦,对不起,我错过了您的原始版本。你不想让-1和1之间的任何值返回为零吗?像这样:$integerValue=$var<1&$var>-1?零:$var=1?正:非正或零;虽然不正常,但赋值将发生在echo语句之前。因此php将分配$integerValue,然后回显任何值。下面是一个快速演示:。这与$row=mysqli\u fetch时的方式类似。。。在计算任何表达式之前,该行中的工作都将被赋值。我需要输出显示:“0”零-零以下的任何内容为:-1负-零以上的任何内容为:2正,例如,尝试在嵌套的三元运算符周围添加paren,如下所示。这将得到您想要的结果:$integerValue=$var==0?零:$var=1?正:非正或零;如果只有两种结果,则最好使用三元运算符。为了便于阅读和故障排除,我会考虑使用if/else。如果只有两种结果,最好使用三元运算符。为了便于阅读和故障排除,我会考虑使用if/else。