为什么三元运算返回错误结果?

时间:2019-09-05 08:22:27

标签: php ternary-operator

我有自定义三元运算,可以从数字中获得用户性别:

代码:

$value = 0;
$gender = $value === 0 ? 'Male' : $value === 1 ? 'Female' : 'Other';
echo $gender;

我认为该代码必须返回Male,但必须返回FemaleHere是示例。

或者我的三元操作不正确,无法获得Male结果?

我的三元操作与此代码不相等吗?

代码:

if($value === 0) $gender = 'Male';
elseif($value === 1) $gender = 'Female';
else $gender = 'Other';

2 个答案:

答案 0 :(得分:4)

这是一个优先问题,您的代码被评估为:

$gender = ($value === 0 ? 'Male' : $value === 1) ? 'Female' : 'Other';

但是您想要的是:

$gender = $value === 0 ? 'Male' : ($value === 1 ? 'Female' : 'Other');

这是因为PHP从左到右评估三元运算符。参见manual

答案 1 :(得分:0)

您需要添加一些括号,以here为参考

<?php

$value = 0;
$gender = $value === 0 ? 'Male' : ($value === 1 ?'Female' : ('Other'));
echo $gender;

检查示例:here