php 中更简洁的三元运算符 ?:

php 中更简洁的三元运算符 ?:

今天我发现了PHP三元运算符的一个小小的用法. 这给我干涸的大脑一点乐趣!       https://blog.csdn.net/imvkmark/article/details/43913091

PHP 三元运算符是对参数赋值时候的一个简洁的主要用法. 一个主要的用法: PHP 三元运算符能够让你在一行代码中描述判定代码, 从而替换掉类似以下的代码:

<?php
if (isset($value)) {
    $output = $value;
} else {
    $output = 'No value set.';
}

 

使用以下代码替代:

<?php
$output = isset($value) ? $value : 'No value set.';

 

第二个代码例子是非常简洁的用法, 在多种情况下(并非所有), 这是一个非常实用的用法. 有许多关于是否应该使用三元运算符的争辩;让我说, 这就是一个工具, 向其他工具一样, 只是用的正确与否.

常用的语法是 (expression) ? value if truthy : value if falsy.这个表达式可以是一个变量, 测试这个变量是真还是假:

<?php
$output = $value ? $value : 'No value set.';

问题是: 以上的例子很常用同时也重复的有些烦人: 写两次 $value 就像是感到错误一样.

好在是, 我今天发现在 PHP 5.3 中介绍了一个更简洁的使用三元运算符的语法. 你可以从手册中学到, 但是这里我们怎么样让上边的例子更简洁呢:

<?php
$output = $value ?: 'No value set.'; 等效于 $output = $value ? $value : 'No value set.'; 

这个看起来很熟悉, 这个是因为很像其他的简写运算符:

<?php
$value = $value . $other_value;

转换成:

<?php
$value .= $other_value;

为了更简洁, 这个意味着我们可以这样简写并不意味着我们就应该这么写. 但是, 当我们写简洁代码的时候, 这种方式会看起来更清楚, 我们应该这么写, (并且这个特性允许我们在多种情况下使用这个运算符[this feature allows us to DRY up the ternary operator in many cases])

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113087.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nactive激活码_在线激活

    (nactive激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/ide…

    2022年3月27日
    66
  • 线性代数 — 矩阵求逆的4种方法

    线性代数 — 矩阵求逆的4种方法矩阵求逆的 4 种方法

    2025年8月15日
    0
  • leetcode最长无重复字符串_直线是一维还是二维

    leetcode最长无重复字符串_直线是一维还是二维【LeetCode】﹝前缀和ி﹞一维、二维前缀和应用文章目录【LeetCode】﹝前缀和ி﹞一维、二维前缀和应用在区间范围内统计奇数数目★区域和检索-数组不可变★★子数组异或查询★★定长子串中元音的最大数目★★生存人数★★二维区域和检索-矩阵不可变★★矩阵区域和★★矩形区域不超过K的最大数值和★★★在区间范围内统计奇数数目★1523.在区间范围内统计奇数数目【题目】给你两个非负整数low和high。请你返回low和high之间(包括二者)奇数的数目。【示例】输入:l

    2025年5月31日
    2
  • SQL IF语句的使用

    SQL IF语句的使用备忘笔记侵删转载https://www.cnblogs.com/xuhaojun/p/9141396.htmlSQL的IF语句MySQL的IF既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:IF表达式IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<>0andexpr1<>NULL),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或字符串值,具体情

    2022年7月16日
    30
  • asp判断session是否为空

    asp判断session是否为空1IfSession(“sesName”)=””Then…2IfSession(“sesName”)=EmptyThen…3IfIsEmpty(Session(“sesName”))Then…4IfCint(Session(“sesName”))=0Then… 来自:百度空间

    2022年7月15日
    17
  • 5G融合通信_网关正在获取怎么解决

    5G融合通信_网关正在获取怎么解决随着物联网5G商用步伐的加速和5G网络建设的突飞猛进,2020年无疑成为5G向千行百业拓展落地的关键之年。作为“新基建”的领头羊,5G已凝聚产业链力量,蓄势待发为行业的智能化和数字化转型赋能,为新一轮经济增长提速。GrassRouter作为5G技术在超高清视频传输领域应用的领先代表,于今年推出了最新一代5G高速物联网B4G+5G聚合路由器,可支持构建点对点安全传输链路,支持移动/联通/电信混用,实现多达7条2G/3G/4G/5G/有线传输链路聚合,成为5G应用落地的重点项目之一。5G要全面覆盖还

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号