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

时间:2011-12-04 02:48:55

标签: php if-statement refactoring control-structure

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

if (isset($x))
{
    if (isset($y))
    {
        $z = array_merge($x,$y);
    }
    else
    {
        $z = $x;
    }
}
else
{
    $z = $y;
}

如果我不担心警告错误,可以使用简单的array_merge($x,$y),但我想知道更好的方法。想法?

1 个答案:

答案 0 :(得分:6)

$z = array_merge(
    isset($x) ? $x : array(),
    isset($y) ? $y : array()
);

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

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

顺便说一句,此代码假定如果设置了$yis_array(),那么它们就是数组。如果不是这种情况,您应该对它们运行array_merge()以确认它们是数组,或者在{{1}}运行时使用type juggling确保它们是数组。