Как можно реорганизовать эту структуру логического элемента управления PHP? - PullRequest
0 голосов
/ 04 декабря 2011

Моя интуиция говорит мне, что есть лучший, возможно, однострочный рефакторинг для следующего кода:

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

Если бы меня не беспокоили ошибки предупреждения, сработал бы простой array_merge($x,$y),но я хотел бы знать лучший способ сделать это.Мысли? * * 1005

1 Ответ

6 голосов
/ 04 декабря 2011
$z = array_merge(
    isset($x) ? $x : array(),
    isset($y) ? $y : array()
);

Это вернет пустой массив, если $x и $y не установлены.Если установлен только один, он вернет этот массив.Если оба параметра установлены, он вернет результат выполнения array_merge() для массивов.

Это не совсем поведение вашего кода выше, но я считаю, что это поведение, которое вы намеревались.(Я полагаю, в вашем коде, что $z не будет массивом, если не заданы и $x, и $y.)

Кстати, этот код предполагает, что если $x и$y установлены, что они являются массивами.Если это не так, вы должны либо запустить на них is_array(), чтобы подтвердить, что они являются массивами, либо использовать жонглирование типа , чтобы убедиться, что они являются массивами при запуске array_merge().

...