Как эта структура управления логикой PHP может быть реформирована?

StackOverflow https://stackoverflow.com/questions/8372865

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top