【问题标题】:How to print value without if else如何在没有 if else 的情况下打印值
【发布时间】:2016-12-03 14:52:01
【问题描述】:
echo result(1);

function reslut($num) 
{ if($num == 1) return 0; if($num == 0) return 1;

}

如何在不使用 if 或 else 语句的情况下执行此操作?

【问题讨论】:

  • 请注意您的 reslut 函数没有参数。你可能想要$num。
  • 而result 是与reslut 不同的函数名称。

标签: php if-statement get logic


【解决方案1】:

使用?: 运算符如下:

$num == 1 ? when_true_expression : when_false_expression;

你可以嵌套这个操作符。

【讨论】:

    【解决方案2】:

    您可以像这样在函数中简单地使用!,就好像所讨论的变量是 1 或 0,它基本上是一个布尔值

    function result($num) 
    { 
        return (int)!$num;
    }
    
    $t = 0;
    $t = result($t);
    echo $t . PHP_EOL;
    $t = result($t);
    echo $t . PHP_EOL;
    $t = result($t);
    echo $t . PHP_EOL;
    $t = result($t);
    echo $t . PHP_EOL;
    

    结果:

    1
    0
    1
    0
    

    【讨论】:

    • 这个答案对我们来说是完美的
    【解决方案3】:

    我已经调整了您的函数 - 将其命名为 result 并添加了参数 $num。

    注意它实际上有三个可能的返回值:0、1 和 null。

    因为您不使用相同的比较运算符(而是使用相等的比较运算符),所以输出可能不是您所期望的,因为 Php 可能会做一些类型的杂耍。

    我添加了一个函数,输入 1 将返回 0,输入 0 将返回 1,任何其他输入都将返回 null。

    <?php
    // Your function.
    function result($num) 
    { 
        if($num == 1)
            return 0;
        if($num == 0)
            return 1;
    }
    
    function swap_one_and_zero($num) 
    {
        return in_array($num, [1,0], true) ? $num ^ 1 : null; 
    }
    
    $tests = [-1, 0, 1, 1.1, 2, 'a', 'foo', null];
    
    var_export(
        array_map('result', $tests)
    );
    
    var_export(
        array_map('swap_one_and_zero',$tests)
    );
    

    输出数组:

    array (
      0 => NULL,
      1 => 1,
      2 => 0,
      3 => NULL,
      4 => NULL,
      5 => 1,
      6 => 1,
      7 => 1,
    )
    
    array (
      0 => NULL,
      1 => 1,
      2 => 0,
      3 => NULL,
      4 => NULL,
      5 => NULL,
      6 => NULL,
      7 => NULL,
    )
    

    我在三元运算符中使用了简化的 if else 语句。并使用 xor 按位运算符在 1 和 0 之间翻转。

    如果你对 if 过敏,可以使用 switch 语句将你的函数替换为 like for like:

    function result($num) 
    {
        switch($num) {
            case 1:
                return 0;
                break;
            case 0:
                return 1;
                break;
        }
    }
    

    【讨论】:

      【解决方案4】:

      使用三元运算符,你可以做到这一点,但你只能定义一个条件

      【讨论】:

      • 这真的只是一个评论。为了使其成为答案,至少显示一个示例
      • @vikrammistry 是否要发布答案取决于您。但不要再假设发布相当于“Google it”的内容是一个合理的答案。
      • 作为开发人员,您应该停止喂汤匙。将来,您的同事将简单地为您指明方向。他们不会为你编写代码。你的想法取决于你。 :)
      • @vikrammistry 这不是一个教程网站;这是一个问答网站。您有一个简单的选择:提供答案,或者不提供。
      猜你喜欢
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多