PHP:向正确的输出显示零

时间:2017-08-08 18:11:52

标签: php

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

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

4 个答案:

答案 0 :(得分:4)

问题是由于PHP三元运算符优先级,与大多数其他语言相比,它可以向后运行: Understanding nested PHP ternary operator

试试最后一行:

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

答案 1 :(得分:0)

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

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

然后添加行

echo $integerValue;

答案 2 :(得分:0)

你错过了一个括号:

<?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"
        )
    )
)

答案 3 :(得分:0)

你已经有另一个答案可以解释为什么你没有得到你期望的结果,但仅仅是因为你的多元三元表达式可以简化一些。

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

$var会评估为false,如果它为零,那么就不需要将其明确地与零进行比较,而最终的"Not Positive or Zero"实际上并非如此可能的结果,因为rand的结果将是一个整数,根据定义,它可以是正数,负数或零。

括号不是必需的,但它们可能会使表达式更加明显。

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