我是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()
函数,这意味着对同一函数的两次调用。
是否可以仅通过一次调用来实现相同的目标,而无需将其保存到临时变量中?
常用的做法是什么?
更新:我编辑了问题以更具体。几乎所有的答案都令人满意,希望这次更新对新读者有所帮助。
我会这样做:
$result = in_array(get_value(), array(0, NULL), true) ? "Zero" : "One" ;
文档:in_array
这个怎么样?
$result = get_value() ? "One" : "Zero";
这会导致get_value()
被类型转换为布尔值。 null
和0
变得false
,1
变得true
。
该函数被调用两次,因为使用了===
运算符,并且仅当返回值正好是0
或null
时才输出Zero,但如果它是假或空字符串,则不会。
一种常见的方法是
$result = ( get_value() ) ? "Zero" : "One" ;
这将输出 false
的零和空字符串。
如果你需要严格的检查,并假设get_value()是一个昂贵的函数,你可以这样做:
$result = ( in_array(get_value(), array(0, null), true ) ? "Zero" : "One" ;
同样有 2 个函数调用,但一个是针对in_array
函数的。
如果您只是将结果保存在临时变量中,它会更具可读性。
更好的是,不要从 get_value() 函数返回混合结果
试试
<? echo (get_value())?"One":"Zero";?>