Как эта структура управления логикой PHP может быть реформирована?
-
27-10-2019 - |
Вопрос
Моя кишка говорит мне, что для следующего кода есть лучший, возможно, однострочный рефактор:
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()
пробеги.