php中三元运算符用法

 语法:条件 ? 结果1 : 结果2

说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。

 

 代码如下  

<?PHP

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

?>

一条代码替代了很多的代码。首先,它使用isset ()函数,检查$_GET['id']是否存在。如果$_GET['id']确实存在,它将返回它的价值。但是,如果它不存在,条件即为假,这时返回的是false。$id的值取决于$_GET['id']是否存在。所以,基本上,如果$_GET['id']存在,$id=$_GET['id'],反之$id=false。

用“?:”条件语句检验用户输入值:

 代码如下  

<?php
$filename = isset($argv[1]) ? $argv[1] : "php://stdin";
$fp = @fopen($filename, ‘r’) or die("Can’t Open $filename for reading");

while (!@feof($fp)) {
    $line = @fgets($fp, 1024);
    print $line;
}

@fclose($fp);
?>

前面使用三元运算符的代码和下面的代码等同:

 代码如下  

<?php
if (isset($argv[1])) {
    $filename = $argv[1];
} else {
    $filename = "php://stdin";
}
?>

可以看出,假设用普通的if-else结构写上述代码,代码量会比上面多出许多,但第二种形式更易理解,而且不要求更多的录入。所以在挑选三元运算符时,请务必权衡一下利弊。

三元运算符优点

PHP中的三元运算符(?:)大大减少了程序员写这些语句的时间。它的语法如下:

condition ? do_if_true : do_if_false;

三元运算符不是一种必不可少的结构,但却是一种美化代码的途径。同样,它可以取代不好的if…else代码块,并且可以提高代码的可读性。

同样,用户可以使用PHP的or运算服赋予变量默认值:

 代码如下  

<?php
$filename = $argv[1] or $filename = "php://stdin";
?>

时间: 2024-09-21 01:37:19

php中三元运算符用法的相关文章

php中三元运算符用法详解

语法:条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2.    代码如下 复制代码 <?PHP $id = isset($_GET['id']) ? $_GET['id'] : false; ?> 一条代码替代了很多的代码.首先,它使用isset ()函数,检查$_GET['id']是否存在.如果$_GET['id']确实存在,它将返回它的价值.但是,如果它不存在,条件即为假,这时返回的是false.$id的值取决于$_GET['id']是否

javascript中in运算符用法分析

  本文实例讲述了javascript中in运算符用法.分享给大家供大家参考.具体分析如下: in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望他的右操作数是一个对象;如果右侧对象拥有一个名为左操作数值的属性名,那么表达式返回true: ? 1 2 3 4 5 6 7 8 var point = {x:1,y:1}; "x" in point //true "z" in point //false "toString" in poin

link中三元运算符表达式和if表达式是一样的么?

问题描述 link中三元运算符表达式和if表达式是一样的么? link中三元运算符表达式和if表达式是一样的么? 解决方案 Linq表达式只能使用三元判断表达式,而不能使用if,if只能用于Lambda Blocks 解决方案二: 效果差不多,语法更简洁.

PHP7新增运算符用法实例分析_php技巧

本文实例讲述了PHP7新增运算符用法.分享给大家供大家参考,具体如下: NULL 合并运算符 其实是三元运算符的改造,减少的代码量 //原先的做法 //$lig = isset($_GET['lig'])?$_GET['lig']:'bee'; $lig = $_GET['lig']??'bee'; echo $lig; 运行效果图如下: 太空船运算符(组合比较符) 实质就是大小比较符,不过相比'<'.'>'的返回值多了-1,跟Java的字符串比较compareto()功能类似 <?ph

浅谈JS中逗号运算符的用法_javascript技巧

注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScript做举例. 最近重新阅读JavaScript权威指南这本书,应该说很认真的阅读,于是便想把所学的东西多记录下来.后 面本人将逐步写上更多关于本书的文章. 本文的理论知识来自于JavaScript权威指南,我这里做一下整理,或者说叫笔记. 如果你的基础够好的话,完全理解不成问题,但是如果读得有些郁闷的话,可以加我的QQ:

C# DataTable中Compute方法用法集锦(数值/字符串/运算符/表等操作)_C#教程

本文实例讲述了C# DataTable中Compute方法用法.分享给大家供大家参考,具体如下: Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详细内容请看这里: http://msdn2.microsoft.com/zh-cn/library/system.data.datacolumn.expression(VS.80).aspx 而Filter则是条件过滤器,类似sql的Where条件. DataTab

实例讲解JavaScript中instanceof运算符的用法_基础知识

instanceof 运算符简介 在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 "object".ECMAScript 引入了另一个 Java 运算符 instanceof 来解决这个问题.instanceof 运算符与 typeof 运算符相似,用于识别正在处理的对象的类型.与 typeof 方法不同的是,instanceof 方法要求开发者明确地确

link中??运算符是二元运算符还是三元运算符?为什么它和?:不同?

问题描述 link中??运算符是二元运算符还是三元运算符?为什么它和?:不同? link中??运算符是二元运算符还是三元运算符?为什么它和?:不同? 解决方案 当然是二元运算符.为什么它和?:不同?为什么?就不告诉你. 解决方案二: ??是二元运算符,?是三元运算符.

link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势?

问题描述 link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势? link中??运算符是二元运算符还是三元运算符?它和?:相比,有什么优势? 解决方案 ?? 就是 ? :的简写 没什么区别和优势,就是个语法糖而已 解决方案二: 没什么区别和优势,就是个语法糖而已 解决方案三: http://www.cnblogs.com/zfanlong1314/archive/2012/02/26/2390456.html