Ste*_*ven 104 php ternary-operator conditional-operator
根据此页面中的示例,我在下面提供了工作和非工作代码示例.
工作代码使用if声明:
if (!empty($address['street2'])) echo $address['street2'].'<br />';
Run Code Online (Sandbox Code Playgroud)
使用三元运算符的非工作代码:
$test = (empty($address['street2'])) ? 'Yes <br />' : 'No <br />';
// Also tested this
(empty($address['street2'])) ? 'Yes <br />' : 'No <br />';
Run Code Online (Sandbox Code Playgroud)
更新
在Brian的小费之后,我发现回声$test输出了预期的结果.以下作品就像一个魅力!
echo (empty($storeData['street2'])) ? 'Yes <br />' : 'No <br />';
Run Code Online (Sandbox Code Playgroud)
Joh*_*sch 209
该
(condition) ? /* value to return if condition is true */
: /* value to return if condition is false */ ;
Run Code Online (Sandbox Code Playgroud)
语法不是"简写if"运算符(?称为条件运算符),因为您无法以与执行代码相同的方式执行代码:
if (condition) {
/* condition is true, do something like echo */
}
else {
/* condition is false, do something else */
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您echo在$address非空时执行语句.您不能以条件运算符的相同方式执行此操作.但是,你可以做echo的是条件运算符的结果:
echo empty($address['street2']) ? "Street2 is empty!" : $address['street2'];
Run Code Online (Sandbox Code Playgroud)
这将显示"街道空无一人!" 如果它是空的,否则它将显示street2地址.
Rab*_*ong 36
从PHP 7开始,只需使用Null合并运算符就可以执行此任务,如下所示:
echo !empty($address['street2']) ?? 'Empty';
小智 26
基本的真/假声明
$is_admin = ($user['permissions'] == 'admin' ? true : false);
Run Code Online (Sandbox Code Playgroud)
有条件的欢迎辞
echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!';
Run Code Online (Sandbox Code Playgroud)
条件项消息
echo 'Your cart contains '.$num_items.' item'.($num_items != 1 ? 's' : '').'.';
Run Code Online (Sandbox Code Playgroud)
adr*_*nks 11
三元运算符只是if和else块的简写.您的工作代码没有其他条件,因此不适用于此.
以下示例将起作用:
echo empty($address['street2']) ? 'empty' : 'not empty';
Run Code Online (Sandbox Code Playgroud)
快捷方式:
echo $address['street2'] ? : "No";
Run Code Online (Sandbox Code Playgroud)
以下是一些有趣的示例,具有一种或多种不同的条件。
$color = "blue";
// Condition #1 Show color without specifying variable
echo $color ? : "Undefined";
echo "<br>";
// Condition #2
echo $color ? $color : "Undefined";
echo "<br>";
// Condition #3
echo ($color) ? $color : "Undefined";
echo "<br>";
// Condition #4
echo ($color == "blue") ? $color : "Undefined";
echo "<br>";
// Condition #5
echo ($color == "" ? $color : ($color == "blue" ? $color : "Undefined"));
echo "<br>";
// Condition #6
echo ($color == "blue" ? $color : ($color == "" ? $color : ($color == "" ? $color : "Undefined")));
echo "<br>";
// Condition #7
echo ($color != "") ? ($color != "" ? ($color == "blue" ? $color : "Undefined") : "Undefined") : "Undefined";
echo "<br>";
Run Code Online (Sandbox Code Playgroud)
请注意,使用嵌套条件运算符时,您可能需要使用括号以避免可能的问题!
看起来 PHP 的工作方式至少与 Javascript 或 C# 不同。
$score = 15;
$age = 5;
// The following will return "Exceptional"
echo 'Your score is: ' . ($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average'));
// The following will return "Horrible"
echo 'Your score is: ' . ($score > 10 ? $age > 10 ? 'Average' : 'Exceptional' : $age > 10 ? 'Horrible' : 'Average');
Run Code Online (Sandbox Code Playgroud)
Javascript 和 C# 中的相同代码在两种情况下都返回“Exceptional”。
在第二种情况下,PHP 的作用是(或者至少我是这么理解的):
$score > 10?是的$age > 10?否,因此当前$age > 10 ? 'Average' : 'Exceptional'返回“异常”'Exceptional' ? 'Horrible' : 'Average'返回“Horrible”,因为“Exceptional”是真的来自文档:http://php.net/manual/en/language.operators.comparison.php
建议您避免“堆叠”三元表达式。当在单个语句中使用多个三元运算符时,PHP 的行为并不明显。
您正在寻找的是三元运算符,也就是猫王运算符(google:P)。
echo $address['street2'] ?: 'Empty';
Run Code Online (Sandbox Code Playgroud)
它返回变量的值;如果变量为空,则返回默认值。