0

私の直感では、次のコードには、おそらく 1 行でリファクタリングできる、より優れた方法があることがわかります。

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

警告エラーを心配していなければ、単純なarray_merge($x,$y)方法でうまくいきますが、これを行うためのより良い方法を知りたいです。考え?

4

1 に答える 1

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

$xとが設定されていない場合、これは空の配列を返し$yます。1 つだけが設定されている場合は、その配列が返されます。両方が設定されている場合はarray_merge()、配列に対する実行の結果が返されます。

これは上記のコードの動作とはまったく異なりますが、意図した動作だと思います。(あなたのコードでは、$zと の両方が設定されていない場合、それは配列$xではないと思います$y。)

ちなみに、このコードは、$x$yが設定されている場合、それらが配列であると想定しています。そうでない場合は、is_array()それらを実行して配列であることを確認するか、型ジャグリングを使用してarray_merge()実行時に配列であることを確認する必要があります。

于 2011-12-04T02:54:21.577 に答える