基于示例 从这一页,我想将下面的 if语句转换为三元运算符。
if
使用 if语句的工作代码:
if (!empty($address['street2'])) echo $address['street2'].'<br />';
我不确定应该如何使用三元操作符来编写,以便只有当数组中存在 street2且不是空字符串时,echo才能工作。
street2
echo
三元运算符只是和 if/else 块的简写。您的工作代码没有 else 条件,因此不适合这种情况。
下面的例子可行:
echo empty($address['street2']) ? 'empty' : 'not empty';
那个
(condition) ? /* value to return if condition is true */ : /* value to return if condition is false */ ;
语法不是一个“简写的 if”运算符(?被称为条件运算符) ,因为你不能像以前那样执行代码:
?
if (condition) { /* condition is true, do something like echo */ } else { /* condition is false, do something else */ }
在您的示例中,当 $address不为空时执行 echo语句。你不能用同样的方法对付条件运算符。然而,你可以做的是 echo条件运算符的结果:
$address
echo empty($address['street2']) ? "Street2 is empty!" : $address['street2'];
如果它是空的,那么它将显示“ Street is nothing!”,否则它将显示 Street 2地址。
我觉得你把括号用错了,试试这个:
$test = (empty($address['street2']) ? 'Yes <br />' : 'No <br />');
我觉得应该可以,你也可以用:
echo (empty($address['street2']) ? 'Yes <br />' : 'No <br />');
有条件的欢迎辞
echo 'Welcome '.($user['is_logged_in'] ? $user['first_name'] : 'Guest').'!';
嵌套 PHP 速记
echo 'Your score is: '.($score > 10 ? ($age > 10 ? 'Average' : 'Exceptional') : ($age > 10 ? 'Horrible' : 'Average') );
请注意,使用嵌套条件运算符时,可能需要使用括号避免可能的问题!
看起来 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');
Javascript 和 C # 中的相同代码在两种情况下都返回“ Exception”。
在第二种情况下,PHP 所做的是(或者至少我是这么理解的) :
$score > 10
$age > 10
$age > 10 ? 'Average' : 'Exceptional'
'Exceptional' ? 'Horrible' : 'Average'
来自文档: http://php.net/manual/en/language.operators.comparison.php
建议您避免“堆叠”三元表达式 在一个单元中使用多个三元运算符时的行为 声明是不明显的。
基本真/假声明
$is_admin = ($user['permissions'] == 'admin' ? true : false);
条件项消息
echo 'Your cart contains '.$num_items.' item'.($num_items != 1 ? 's' : '').'.';
档号: https://davidwalsh.name/php-ternary-examples
通过用 <?= code ?>替换 echo,您可以缩短这个过程
<?= code ?>
<?=(empty($storeData['street2'])) ? 'Yes <br />' : 'No <br />'?>
这是非常有用的,特别是当你想在导航栏中确定菜单选项是否应该显示为已经访问(单击) :
<li<?=($basename=='index.php' ? ' class="active"' : '')?>><a href="index.php">Home</a></li>
在 PHP 7中,这个任务可以像下面这样简单地使用 空结合运算符来执行:
echo $address['street2'] ?? 'Empty';
还有一个简写的三进制运算符,看起来像这样:
(Expression1) ? : Expression2将返回 表情1,如果它的计算结果为 true,或者返回 表情2。
例如:
$a = 'Apples'; echo ($a ?: 'Oranges') . ' are great!';
会回来的
Apples are great!
从 PHP 5.3开始,可以省略 如果 expr1,表达式 expr1? : expr3返回 expr1 计算结果为 TRUE,否则为 exp3。
来自 PHP 手册
快捷方式:
echo $address['street2'] ? : "No";
这里有一些有趣的例子,有一个或多个不同的条件。
$color = "blue"; // Example #1 Show color without specifying variable echo $color ? : "Undefined"; echo "<br>"; // Example #2 echo $color ? $color : "Undefined"; echo "<br>"; // Example #3 echo ($color) ? $color : "Undefined"; echo "<br>"; // Example #4 echo ($color == "blue") ? $color : "Undefined"; echo "<br>"; // Example #5 echo ($color == "" ? $color : ($color == "blue" ? $color : "Undefined")); echo "<br>"; // Example #6 echo ($color == "blue" ? $color : ($color == "" ? $color : ($color == "" ? $color : "Undefined"))); echo "<br>"; // Example #7 echo ($color != "") ? ($color != "" ? ($color == "blue" ? $color : "Undefined") : "Undefined") : "Undefined"; echo "<br>";
在 PHP 7 + 中更新
// Check if the value exists echo $_GET['user'] ?? "Undefined"; // Before isset($_GET['user']) ? $_GET['user'] : 'undefined'; // Multiple conditions can be added echo $_GET['user'] ?? $_POST['user'] ?? $color ?? 'Undefined';
这是三元操作员又名猫王操作员(谷歌它: P)你正在寻找。
echo $address['street2'] ?: 'Empty';
如果变量为空,则返回变量的值或默认值。
我认为你可能不应该在 PHP 中使用三元操作符。 考虑下一个例子:
<?php function f1($n) { var_dump("first funct"); return $n == 1; } function f2($n) { var_dump("second funct"); return $n == 2; } $foo = 1; $a = (f1($foo)) ? "uno" : (f2($foo)) ? "dos" : "tres"; print($a);
你认为 $a变量会包含什么? (提示: dos) 即使 $foo变量被赋值为2,它也将保持不变。
$a
$foo
为了让事情变得更好,你可以拒绝使用这个操作符,或者用大括号把右边的部分包围起来,方法如下:
$a = (f1($foo)) ? "uno" : ((f2($foo)) ? "dos" : "tres");
三元运算符基本上是 if/else 语句的简写。我们可以使用它来减少代码行数并增加可读性。
你的代码对我来说看起来更干净。但是我们可以添加更干净的方式如下-
$test = (empty($address['street2'])) ? 'Yes <br />' : 'No <br />';
另一种方式-
$test = ((empty($address['street2'])) ? 'Yes <br />' : 'No <br />');
注 - 我在整个表达式中添加了方括号以使其更加清晰。我通常这样做是为了增加可读性。 有了 PHP7,我们可以使用 零聚合算子/php 7? ? 算子更好的方法。但是你的要求它不适合。
如果第一个变量($a)是 null,那么将第二个变量($b)的值赋给第一个变量($a)
null
$b
$a = 5; $b = 10; $a != ''?$a: $a = $b; echo $a;
我不认为我在以上所有的解决方案中找到了答案。 有些人也错了。 < br > < br > 若要测试变量(或数组的元素或对象的属性)是否存在(并且不为空) ,请使用: echo isset($address['street2']) ? $address['street2'] : 'Empty'; 要测试变量(...)是否包含一些非空数据,请使用: echo !empty($address['street2']) ? $address['street2'] : 'Empty';
echo isset($address['street2']) ? $address['street2'] : 'Empty';
echo !empty($address['street2']) ? $address['street2'] : 'Empty';
还有其他的简写吗?
试试这个
($value == 1) ? "selected" : "";