3

我是 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

4 回答 4

11

我会这样做:

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

文档:in_array

于 2012-08-15T15:21:05.717 回答
7

这个怎么样?

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

这会导致get_value()类型转换为布尔值。 变成变成变成. null_0false1true

于 2012-08-15T15:20:51.537 回答
1

由于使用了运算符,该函数被调用了两次===,并且仅当返回值恰好是0or时才会输出零null,但如果它是 false 或空字符串则不会。

一种常见的方法是

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

这也将输出零false和空字符串。

如果您需要严格检查,并假设 get_value() 是一个昂贵的函数,您可以这样做:

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

还有 2 个函数调用,但一个是函数调用in_array

如果您只是将结果保存在临时变量中,它会更具可读性。

更好的是,不要从 get_value() 函数返回混合结果

于 2012-08-15T15:22:52.650 回答
0

尝试

<? echo (get_value())?"One":"Zero";?>
于 2012-08-15T15:21:38.593 回答