PHP简写三目运算符实现二选一

PHP简写三目运算符实现二选一技术

maybe yes 发表于2015-09-21 00:08

原文链接 : http://blog.lmlphp.com/archives/145/Shorthand_TRINOCULAR_operators_in_PHP_to_realize_a_second_election_alternative  来自 : LMLPHP后院

写 过 PHP 的人应该都知道,PHP 中的逻辑运算符与或非计算后返回的值都是布尔值 true 或 false。而在其他的语言中,比如 JavaScript 和 Python 中,或运算(||) 会返回两者中的一个,是二选一。由于习惯了 JavaScript 的那种或运算的写法,导致一次我在将 Python 业务代码移植到 PHP 中时写出了一个 BUG。

看下面的 JavaScript 代码:

var name = obj.name || 'Anonymous'; var callback = obj.callbackFunc || function(){};

在 JS 中,上面的写法非常常见。它和 Python 一样,或运算返回的是二选一。如果要在 PHP 中实现二选一,是不可以那样写的。很久以前也看到过三目运算的简写,之后再也没见到过那种写法,真的太少见,最近一次看到,让我觉得有点陌生。

在 PHP 中,可以使用三目运算符简写的方式实现二选一,如下示例:

$name = $obj->name ?: 'Anonymous';

好的程序员应该写出好的代码,好的代码就应该选择一种最好的方式来写,而不是去写一些很奇怪的东西,这样容易造成别人的误解,特别是团队开发。

比如,在 PHP 中,我们一般习惯用 isset() 来判断是否有设置值,但有些人会使用 @ 符号来屏蔽报错,其实这样是不规范的,屏蔽 Notice 错误对系统架构来讲是不健康的。如下所示:

$name = @$_GET['name'];

上面的代码系不规范的,也是极不提倡的,应该写成下面的方式:

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

// 等价于 PHP 7 新写法 $name = $_GET['name'] ?? '';

阅(910)评(0)查看评论

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

thinkphp3.2.3模板渲染支持三元表达式

thinkphp3.2.3模板渲染支持三元表达式{$status?'正常':'错误'}{$info'status'?$info'msg':$info'error'}注意:三元运算符中暂时不支持点语法。如下:           <divclass"modalhidefade"id'myModa

PHP简写三目运算符实现二选一 - HelloWorld