三元运算符在 PHP 中的用法


usage of ternary operators in 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()函数,这意味着对同一函数的两次调用。

是否可以仅通过一次调用来实现相同的目标,而无需将其保存到临时变量中?

常用的做法是什么?

更新:我编辑了问题以更具体。几乎所有的答案都令人满意,希望这次更新对新读者有所帮助。

我会这样做:

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

文档:in_array

这个怎么样?

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

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

该函数被调用两次,因为使用了===运算符,并且仅当返回值正好是0null时才输出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";?>