Короче, если это еще что в PHP?

Я искал некоторый сокращенный код if / else, но в отличие от $var ? $a : $b $var ? $a : $b ему не требуется возвращаемое значение «else». То, что я хочу, будет в основном это, но короче:

 $myVariable = "abc"; echo $myVariable ? $myVariable : "hello"; echo $myVariable ? "hello" : $myVariable; 

Я как бы привык делать такую ​​вещь в Lua, которая выглядит так:

 local myVariable = "abc" -- In case myVariable is false, print "hello". Otherwise it prints "abc" print ( myVariable or "hello" ) -- In case myVariable does have something (So, true) print "goodday." print ( myVariable and "goodday" ) 

Поэтому я задавался вопросом, имеет ли PHP возможность выполнять такую ​​функцию? Благодарю.

 $myVariable ? $myVariable : ""; 

эквивалентно:

 $myVariable ?: ""; 

PS: Вы должны знать, что PHP действительно создает жонглирование здесь. Это в основном то же самое, что:

 if ($myVariable == TRUE) ... 

Если $myVariable оказывается такой же строкой, как и 0 , она будет оцениваться как false. Однако 00 оценит значение true. Я считаю, что это не так полезно, как кажется. Во многих случаях вам нужно будет проверить, $myVariable ли параметр $myVariable вначале, или выполнить сравнение типов и убедиться, что переменная является логической …

Вам не нужно использовать другой оператор ternar, вы всегда можете сделать что-то вроде:

 $myVariable = "abc"; echo $myVariable ? $myVariable : ""; 

Что печатает ничего, если не $ myVariable

Начиная с PHP 5.3 вы можете:

 echo $myVariable ?: "hello"; 

Ведьма равна:

 echo $myVariable ? $myVariable : "hello"; 

Я думаю, что второй вариант невозможен.

 echo (!empty($myVariable)) ? $myVariable : "hello"; 

или

 echo (isset($myVariable)) ? $myVariable : "hello"; 

Поскольку PHP является языком с $myVariable типизацией, $myVariable содержащий 0 или "" , может рассматриваться как false . И вы должны проверить, существует ли переменная или, по крайней мере, убедиться, что она является строкой.

 $myVariable = "abc"; echo $myVariable ? : "hello"; 

Он не становится короче, чем указано выше в PHP. Это должно проверить, что $ myVariable имеет значение и распечатывает его, иначе распечатайте «привет»,

Все делают то же самое. Еще короче в php 7

 $var = $var ?? $var;