在PHP中使用三元运算符

时间:2012-08-15 15:17:46

标签: php

我是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()函数两次,这意味着对同一个函数进行两次调用。

是否可以通过一次调用实现相同而不将其保存到临时变量中?

常用的做法是什么?

更新:我编辑的问题更加具体。几乎所有答案都令人满意,希望此更新能为新读者提供帮助。

4 个答案:

答案 0 :(得分:10)

我会这样做:

$result =  in_array(get_value(), array(0, NULL), true) ? "Zero" : "One" ;

文档:in_array

答案 1 :(得分:7)

这个怎么样?

$result = get_value() ? "One" : "Zero";

这会导致get_value()被类型转换为布尔值。 null0成为false1成为true

答案 2 :(得分:1)

该函数被调用两次,因为使用了===运算符,只有当返回值正好是0null时才会输出零,但如果它是假的,则不会输出零或空字符串。

一种常见的方法是

$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";?>