我是PHP的新手并且正在尝试学习。
避免使用临时变量是否可行?
<?php
function get_name()
{
// assume that this function return 3
// values on different conditions "name0" "name1" or "name2";
}
$result = ( get_name() == "name0" || get_name() == "name1") ? "Primary" : "Secondary" ;
echo $result;
?>
在上面我调用了get_name()
函数两次,这意味着对同一个函数进行两次调用。
是否可以通过一次调用实现相同而不将其保存到临时变量中?
常用的做法是什么?
更新:我编辑的问题更加具体。几乎所有答案都令人满意,希望此更新能为新读者提供帮助。
答案 0 :(得分:10)
答案 1 :(得分:7)
这个怎么样?
$result = get_value() ? "One" : "Zero";
这会导致get_value()
被类型转换为布尔值。 null
和0
成为false
,1
成为true
。
答案 2 :(得分:1)
该函数被调用两次,因为使用了===
运算符,只有当返回值正好是0
或null
时才会输出零,但如果它是假的,则不会输出零或空字符串。
一种常见的方法是
$result = ( get_value() ) ? "Zero" : "One" ;
将输出false
的零和空字符串。
如果您需要严格检查,并假设get_value()是一个昂贵的函数,您可以这样做:
$result = ( in_array(get_value(), array(0, null), true ) ? "Zero" : "One" ;
还有2个函数调用,但其中一个是in_array
函数。
更好的是,不要从get_value()函数返回混合结果
答案 3 :(得分:0)
试
<? echo (get_value())?"One":"Zero";?>