php三元if / else与sizeof总是假?

时间:2017-08-07 10:27:21

标签: php ternary

我在PHP中使用三元分配时遇到了一个奇怪的(但希望简单的错过)问题。 $ category之下设置为空白,这意味着sizeof($ data)正在评估为0.我的期望是它应该被分配'测试类别'。

$data=array('Test Category');
$category= (sizeof($data)>0 ? trim($data[0]) : '');

如果我改为执行以下操作,我会获得$ category类别'测试类别',为什么三元运算符的工作原理如下?

if(sizeof($data)>0){
  $category=trim($data[0]);
}

3 个答案:

答案 0 :(得分:2)

如此检查$data[0]

if(isset($data[0]) && !empty($data[0])){
    $category=trim($data[0]);
}

您可以将此更改为三元,如下所示:

$category = (isset($data[0]) && !empty($data[0])) ? $data[0] : '';

答案 1 :(得分:0)

你编写三元组时失败了,看看你的括号。

尝试:$category= (sizeof($data)>0) ? trim($data[0]) : '';

答案 2 :(得分:0)

如果你的数组有一个空值意味着你得到了相同的结果,这里是代码的两个例子:

$data=array();

$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; // output is no

另一个是:

$data=array('');

$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; //output is empty. it wont show the 'no'

在您的情况下,检查测试类别是否为空值或null您的代码:

$data=array('Test Category');

$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; //output is Test Category