PHP有什么更好的方法来编写if +三元函数?

Has*_*sen 2 php function ternary

基本上,它只是在两个值之间切换。如果输入XI,则得到6;如果输入6,则得到X。如果输入其他值,则值将保持不变。

function change($val) {
  if ($val == "X" || $val == 6) { $val = $val=="X" ? 6 : "X"; } else
  if ($val == "J" || $val == 3) { $val = $val=="J" ?  3 : "J"; }
  return $val;
}
Run Code Online (Sandbox Code Playgroud)

这是我实际上使用的功能的简化版本,因此无需询问为什么需要它。我将其作为and数组进行了尝试,但由于我将输入其他需要输出而无需更改的数字,因此它不起作用。它需要输入所有数字和字母,但只能更改功能中的数字和字母,其他字符应保持不变。

预期的输出。

change(6)
X
change(8)
8
change(X)
6
change(L)
L
change(3)
J
Run Code Online (Sandbox Code Playgroud)

因此,我基本上是在寻找一种更简单的方法来编写此函数(如果有)。在我看来,这看起来很丑陋,但是如果没有更好的方法,那就很好。

编辑:进行编辑以添加其他条件,因为我没有意识到代码对于一个或多个条件可能会非常不同。实际的代码具有五个条件。

Mat*_*hai 5

如果您使用的是PHP> 7.0,则可以使用以下解决方案:

function change($val)
{
    return [6 => 'X', 'X' => 6][$val] ?? $val;
}
Run Code Online (Sandbox Code Playgroud)

对于较低版本,它可能像:

function change($val)
{
    $changes = [6 => 'X', 'X' => 6];

    return isset($changes[$val]) ? $changes[$val] : $val;
}
Run Code Online (Sandbox Code Playgroud)