PHP三元操作符的速成课程与实例

207 阅读3分钟

在这篇文章中,我们将讨论PHP中的三元运算符。在介绍语法的同时,我们将通过几个真实的例子来了解它是如何工作的。

什么是三元运算符?

三元运算符(?: )是一个条件运算符,它允许你执行一个条件,并根据条件的结果,允许你返回不同的结果。在大多数情况下,你可以用它来替代if-else语句,特别是当你想根据特定条件的结果来分配变量时。

语法

让我们来看看三元运算符的语法。

在大多数情况下,三元运算符采取以下形式。

(expression1) ? (expression2) : (expression3)

首先,执行expression1 ,如果评估结果为TRUE ,则评估并返回expression2 ,否则评估expression3 ,并返回其结果。

值得注意的是,三元运算符是一个表达式。所以你不能用它来返回一个函数中的值,这个函数是通过引用来返回值的。

以上就是关于三元运算符的语法。在下一节中,我们将看到几个真实世界的例子来了解它是如何工作的。

实例

在本节中,我们将通过几个例子来了解三元运算符的工作原理。

首先,让我们看一下下面这个if-else的例子。

if (isset($_GET['limit'])) {
    $limit = $_GET['limit'];
} else {
    $limit = 10;
}

这是一个非常简单的if-else 语句,它检查$_GET['limit'] 变量是否被设置,如果被设置,就用$_GET['limit'] 变量的值初始化$limit 变量。否则,它将$limit 变量设置为10。

现在,让我们看看上面的片段在使用三元操作符后是什么样子的。

$limit = (isset($_GET['limit']) ? $_GET['limit'] : 10;

正如你所看到的,当我们使用三元运算符时,它只是一行代码,而不是五行的if-else语句代码。除了减少了整体的代码长度之外,代码看起来也更有可读性。

你也可以将多个三元表达式进行堆叠,如下例所示。

$limit = (isset($_GET['limit']) ? ($_GET['limit'] > 100 ? 10 : $_GET['limit']) : 10;

在上面的例子中,如果$_GET['limit'] 变量被设置,它将调用另一个三元组表达式,检查$_GET['limit'] 变量的值是否大于100,它将返回10,否则它将返回$_GET['limit'] 变量的实际值。如果$_GET['limit'] 变量的值没有被设置,它将默认为10。

虽然,你可能想堆叠多个三元表达式以减少代码长度,但不建议这样做,因为这会使事情变得难以理解,而且三元运算符会失去其使事情变得更简单的初衷。

三元运算符的好处是什么?

现在你已经知道了三元运算符的基本知识。在本节中,我们将看到使用三元运算符的一些好处。

三元运算符的主要好处是,它可以减少代码长度。让我们看看下面的例子来理解它。

if (isset($_GET['name'])) {
    $name = $_GET['name'];
} else {
    $name = ‘’;
}
if (isset($_GET['age'])) {
    $age = $_GET['age'];
} else {
    $age = ‘’;
}
if (isset($_GET['email'])) {
    $email = $_GET['email'];
} else {
    $email = ‘’;
}

现在,当你使用三元运算符时,上面的代码看起来像这样。

$name = (isset($_GET['name']) ? $_GET['name'] : ‘’;
$age = (isset($_GET['age']) ? $_GET['age'] : ‘’;
$email = (isset($_GET['email']) ? $_GET['email'] : ‘’;

现在看起来是不是紧凑多了?

除了减少代码长度外,它还提高了代码的可读性。当你使用三元运算符时,你可以很快弄清楚表达式是如何被评估的。

最后,如果你的代码是紧凑的,那么随着时间的推移,维护和调试它就更容易了。

什么是三元组速记运算符?

在本节中,我们将讨论三元速记运算符,即三元运算符的速记版本,到底是如何工作的。如果你想在测试为真时返回测试语句的结果,你就会想使用三元速记运算符--这样可以避免重复。

语法

让我们来看看三元速记运算符的语法。

(expression1) ?: (expression2)

首先,执行expression1 ,如果评估结果为TRUE ,则返回expression1 ,否则返回expression2 。正如你所看到的,我们通过跳过?: 分隔符之间的表达来避免重复。

例子

让我们快速浏览一下下面的例子,看看三元组速记运算符是如何工作的。

// ternary shorthand operator
$output = $x ?: 0;

// ternary operator
$output = $x ? $x : 0;

在上面的例子中,如果$x 变量的值是TRUE ,那么$x 变量的值就会被分配给$output 变量,否则$output 将被设置为0。我还演示了用普通的三元组运算符的情况。

总结

今天,我们讨论了PHP中三元运算符的基础知识,以及一些真实世界的例子。我希望你发现三元运算符在你的编码中很有用。