没有其他如何打印价值

时间:2016-12-03 14:52:02

标签: php if-statement get logic

echo result(1);

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

}

如何在不使用ifelse声明的情况下执行此操作?

4 个答案:

答案 0 :(得分:0)

使用?:运算符,如下所示:

$num == 1 ? when_true_expression : when_false_expression;

您可以嵌套此运算符。

答案 1 :(得分:0)

你可以在这个函数中使用!,就好像有问题的变量是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

答案 2 :(得分:0)

我调整了你的功能 - 给它起了名字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之间翻转。

如果您对ifs过敏,可以使用switch语句替换您的函数:

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

答案 3 :(得分:-3)

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