#php #ternary
#php #троичный
Вопрос:
//if more than one attribute is being added
if (is_array($data[0]))
{
$datas = $data;
}
//if only one attribute is being added
else
{
$datas[0] = $data;
}
Мне было интересно, можно ли написать приведенный выше код на троичном языке в одной строке
Комментарии:
1. Вы могли бы написать это как одну строку без троичного. Просто удалите все символы новой строки. PHP в любом случае вообще не требует их.
2. @Gherman это очень плохая рекомендация
3. @WesleySmith Это вообще не рекомендация. Я думаю, что вопрос не очень практичен для начала, но больше о языке gramar и его возможностях. Если вы подумаете об этом, большинство минификаторов JavaScript делают именно это, помимо многих других вещей.
4. Если вопрос прямо задает вопрос, возможно ли что-то, что вы считаете плохим, это не создает оснований для его закрытия. Какие правила SO, по вашему мнению, здесь нарушены?
Ответ №1:
Технически, да:
is_array($data[0]) ? $datas = $data : $datas[0] = $data;
Но не делайте этого.
Троичные операторы предназначены для выражения операции:
something = condition ? value : other-value
Используя их для:
condition ? operation : other-operation
… в лучшем случае сбивает с толку.
Если у вас возникла if/else
ситуация, используйте if/else
инструкции.
Ответ №2:
$datas = is_array($data[0])? $data : [$data];
Комментарии:
1.
is_array($data[0])