PHP中的条件运算符快捷方式

时间:2009-10-15 18:41:48

标签: php conditional-operator

有人知道PHP中是否有以下语句的快捷方式吗?

$output = isset($some_value) ? $some_value : "Some Value Not Set";
echo $output;

这是我经常遇到的问题,其中$ some_value实际上很长并且可能涉及一个函数,例如:

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value) ? $this->db->get_where('my_db',array('id'=>$id))->row()->some_value) : "Some Value Not Set";
echo $output;

似乎应该有一个操作员或功能来执行此操作。我可以很容易地写一个,我不是在寻找答案,而是如果有人知道内置的快捷方式。

6 个答案:

答案 0 :(得分:8)

  

从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。

http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:4)

在为此目的使用条件运算符之前,您应该使用数据库调用的结果设置变量。您的示例使数据库调用两次。

例如:

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value);
$output = $output ? $output : "Some Value Not Set";
echo $output;

有了这个,这是一个很好的例子,不使用条件运算符真的更明智,这实际上并不是用作通用if-then捷径。

答案 2 :(得分:4)

如果你需要在?之后重用测试中的long表达式,你可以将它分配给测试中的变量(因为赋值是返回指定值的表达式),并在{{{{}后使用此变量1}}:

?

答案 3 :(得分:4)

你似乎害怕空白。用它!从优!如果在问号和冒号之前和之后分别添加空格,则您的代码更易于阅读。如果您的陈述太长,请添加换行符。试试吧,它不会伤到你。

答案 4 :(得分:3)

我确实认为条件运算符是快捷方式:)为了保存函数调用和可读性,我建议首先将值保存到变量中。

$some_value = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value);
$output = $some_value ? $some_value : "Some Value Not Set";
echo $output;

答案 5 :(得分:1)

最好的方法是:

$output = $this->db->get_where('my_db',array('id'=>$id))->row()->some_value)
echo $output =($output)?$output:"Some Value Not Set";

只执行一次!