如何重构这个PHP逻辑控制结构?

pba*_*ney 0 php refactoring if-statement control-structure

我的直觉告诉我,对于以下代码,有一个更好的,也许是单行重构:

if (isset($x))
{
    if (isset($y))
    {
        $z = array_merge($x,$y);
    }
    else
    {
        $z = $x;
    }
}
else
{
    $z = $y;
}
Run Code Online (Sandbox Code Playgroud)

如果我不担心警告错误,一个简单的array_merge($x,$y)工作,但我想知道一个更好的方法来做到这一点.思考?

Tro*_*ott 6

$z = array_merge(
    isset($x) ? $x : array(),
    isset($y) ? $y : array()
);
Run Code Online (Sandbox Code Playgroud)

如果$x$y未设置,这将返回一个空数组.如果只设置了一个,它将返回该数组.如果两者都设置,它将返回array_merge()数组上的运行结果.

这不是上面代码的行为,但我相信这是你想要的行为.(我相信,在你的代码中,$z如果两个不会是一个数组$x$y未设置.)

顺便说一句,这段代码假设if $x$yset,它们是数组.如果不是这种情况,您应该运行is_array()它们以确认它们是数组或使用类型juggling以确保它们在array_merge()运行时是数组.