我是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") );
答案 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';