开放的编程资料库

当前位置:我爱分享网 > PHP教程 > 正文

学习三元运算符——技巧与窍门

大约六个月前,我开始使用三元运算符逻辑,并注意到自己一直在使用简写 if/else 逻辑。它缩短了我的代码,缩短了编写代码的时间,让我在小胡子面前看起来更聪明。

多亏了 Google Analytics,我发现我收到了很多来自程序员的页面浏览,他们正在寻找有关“速记 if/else”、“三元逻辑”和“速记逻辑 php”的信息。我为“?:”新手制定了一些指南,让学习速记 if/else 变得尽可能快速和简单。

以If/Else开头,然后转为三进制

从简单的 if/else 代码中的表达式开始,然后小心地将每个 if/else 转换为更短的三元语句。采取额外的步骤为每个表达式创建变量可能会有所帮助。

/* start with if / else ... */
if($language == 'php')
{
	$dynamic = true;
}
else
{
	$dynamic = false;
}

/* ... then convert */
$dynamic = ($language == 'php' ? true : false); //or 1 : 0

/* optional code shortening */
$dynamic = $language == 'php';

使用括号对逻辑进行分组

将表达式放在括号中是保持代码井井有条以供日后维护的好方法。

//viva grouping!
$age_code = ($age > 10 ? ($age > 20 ? ($age > 30 ? 'senior' : 'adult') : 'teen') : 'youngster');

//the following isn't as fun to read
$age_code = $age > 10 ? $age > 20 ? $age > 30 ? 'senior' : 'adult' : 'teen' : 'youngster';

对部分表达式使用“中间”变量

上面的 10/20/30 代码很粗糙,很难维护。使用变量可能有助于简化事情。

//better?
$over_30 = ($age > 30 ? 'senior' : 'adult');
$over_20 = ($age > 20 ? $over_30 : 'teen');
$age_code = ($age > 10 ? $over_20 : 'youngster');

使用 True/False 布尔值,而不仅仅是表达式

您可能知道,您可以只使用表达式作为返回值。如果您认为这会在学习过程中伤害您,请明确返回 truefalse

/* explicit */
$can_drive = ($age >= 16 ? true : false);

/* implicit, just the expression */
$can_drive = $age >= 16;

知道何时不使用三元逻辑

如果逻辑中有很多嵌套的 if/else 语句,速记表达式可能不是最好的选择。例如,以下代码片段返回给定年份是否为闰年:

$is_leap_year = ((($year % 4) == 0) && ((($year % 100) != 0) || (($year %400) == 0)));

以上代码适用于三元逻辑,因为它不必经常更新——闰年“计算”始终相同。如果您有需要经常更新的代码,简写 if/else 可能不是最佳选择。

测试!测试!测试!

与任何类型的编程一样,尽早并经常测试!

未经允许不得转载:我爱分享网 » 学习三元运算符——技巧与窍门

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏