我已经调整了您的函数 - 将其命名为 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;
}
}