有人知道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;
似乎应该有一个操作员或功能来执行此操作。我可以很容易地写一个,我不是在寻找答案,而是如果有人知道内置的快捷方式。
答案 0 :(得分:8)
从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。
答案 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";
只执行一次!