Я искал некоторый сокращенный код 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;