echo result(1);
function reslut($num)
{ if($num == 1) return 0; if($num == 0) return 1;
}
如何在不使用if
或else
声明的情况下执行此操作?
答案 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)
使用三元运算符,您可以这样做,但只能定义一个条件