PHP7新特性之三元运算符 ?? 和 ?: 的区别以及使用场景

1、 (expr1) ?? (expr2)  是 PHP7才有的功能,等同于:

isset(expr1) ? expr1 : expr2 ; //?? 省去了判断是否存在这一步,但是如果要判断是否为空 则不能用这个

 

2、(expr1) ?: (expr2) 是PHP5.3才有的功能,等同于以前写法:

expr1 ? expr1 : expr2; // 但是,?: 这个写法的前提是 expr1 要已经定义的, 不然就会报undefine错误!!

 

综上, 只判断expr1是否定义用 ??  方便,如果要求判断expr1非空还是要用到普通的三元运算写法:

!empty(expr1) ? expr1 : expr2;

个人建议自己写的话还是写普通的三元运算,很明了 还不容易报错,目前很多编辑器会报错??的写法,之所以查阅这个并整理自己的感悟,是为了阅读大神的源码的时候能看懂!

各位大佬,非喜勿喷!只为方便小弟记录,怕日后忘记了!

你可能感兴趣的:(PHP7新特性之三元运算符 ?? 和 ?: 的区别以及使用场景)