php 操作符与控制结构


Posted in PHP onMarch 07, 2012

操作符

操作符是用来对数组和变量进行某种操作运算的符号。

1、算术操作符

操作符 名称 示例
+ $a+$b
- $a-$b
* $a*$b
/ $a/$b
% 取余 $a%$b

2、复合赋值操作符

操作符 使用方法 等价于
+= $a+=$b $a=$a+$b
-= $a-=$b $a=$a-$b
*= $a*=$b $a=$a*$b
/= $a/=$b $a=$a/$b
%= $a%=$b $a=$a%$b
.= $a.=$b $a=$a.$b

前置递增递减和后置递增递减运算符:

$a=++$b;

$a=$b++;

$a=--$b;

$a=$b--;

3、比较运算符

操作符 名称 使用方法
= = 等于 $a= =$b
= = = 恒等 $a= = =$b
!= 不等 $a!=$b
!= = 不恒等 $a!= =$b
不等 $a$b
小于 $a
> 大于 $a>$b
小于等于 $a
>= 大于等于 $a>=$b

注:恒等表示只有两边操作数相等并且数据类型也相当才返回true;

例如:0= ="0" 这个返回为true ,因为操作数相等

      0= = ="0"  这个返回为false,因为数据类型不同

4、逻辑运算符

操作符 使用方法 使用方法 说明
! !$b 如果$b是false,则返回true;否则相反
&& $a&&$b 如果$a和$b都是true,则结果为true;否则为false
|| $a||$b 如果$a和$b中有一个为true或者都为true时,其结果为true;否则为false
and $a and $b 与&&相同,但其优先级较低
or $a or $b 与||相同,但其优先级较低

操作符"and""or"&&||的优先级要低。

5、三元操作符

Condition ? value if true : value if false

示例:($grade>=50 ? "Passed" : "Failed")

6、错误抑制操作符:

$a=@(57/0);

除数不能为0,会出错,所以加上@避免出现错误警告。

7、数组操作符

操作符 使用方法 使用方法 说明
+ 联合 !$b 返回一个包含了$a和$b中所有元素的数组
= = 等价 $a&&$b 如果$a和$b具有相同的元素,返回true
= = = 恒等 $a||$b 如果$a和$b具有相同的元素以及相同的顺序,返回true
!= 非等价 $a and $b 如果$a和$b不是等价的,返回true
非等价   如果$a和$b不是等价的,返回true
!= = 非恒等 $a or $b 如果$a和$b不是恒等的,返回true

操作符的优先级和结合性:

一般地说,操作符具有一组优先级,也就是执行他们的顺序。

操作符还具有结合性,也就是同一优先级的操作符的执行顺序。这种顺序通常有从左到右,从右到左或者不相关。

下面给出操作符优先级的表。最上面的操作符优先级最低,按着表的由上而下的顺序,优先级递增。

操作符优先级

结合性 操作符
Or
Xor
And
Print
= += -= *= /= .= %= &= |= ^= ~= >=
?:
||
&&
|
^
&
不相关 = =  != =  = = =  != =
不相关 >=
>
+ - .
* / %
! ~ ++ -- (int)(double)(string)(array)(object) @
[]
不相关 New
不相关 ()

为了避免优先级混乱,可以使用括号避开优先级。

控制结构

如果我们希望有效地相应用户的输入,代码就需要具有判断能力。能够让程序进行判断的结构称为条件。

1、if..else循环有三种结构
第一种是只有用到if条件,当作单纯的判断。解释成“若发生了某事则怎样处理”。语法如下:
if (expr) { statement }
其中的expr为判断的条件,通常都是用逻辑运算符号当判断的条件。而statement为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
范例:本例省略大括号。

<?php 
if ($state==1)echo "哈哈" ; 
?>

这里特别注意的是,判断是否相等是==而不是=,ASP程序员可能常犯这个错误,=是赋值。
范例:本例的执行部分有三行,不可省略大括号。
<?php 
if ($state==1) { 
echo "哈哈 ; 
echo "<br>" ; 
} 
?>

第二种是除了if之外,加上了else的条件,可解释成“若发生了某事则怎样处理,否则该如何解决”。语法如下:
if (expr) { statement1 } else { statement2 }
范例:上面的例子来修改成更完整的处理。其中的else由于只有一行执行的指令,因此不用加上大括号。
<?php 
if ($state==1) { 
echo "哈哈" ; 
echo "<br>"; 
} 
else{ 
echo "呵呵"; 
echo "<br>"; 
} 
?>

第三种就是递归的if..else循环,通常用在多种决策判断时。它将数个if..else拿来合并运用处理。
直接看下面的例子:

<?php 
if ( $a > $b ) { 
echo "a 比 b 大" ; 
} elseif ( $a == $b ) { 
echo "a 等于 b" ; 
} else { 
echo "a 比 b 小" ; 
} 
?>

上例只用二层的if..else循环,用来比较a和b两个变量。实际要使用这种递归if..else循环时,请小心使用,因为太多层的循环容易使设计的逻辑出问题,或者少打了大括号等,都会造成程序出现莫名其妙的问题。

2、for循环就单纯只有一种,没有变化,它的语法如下:
for (expr1; expr2; expr3) { statement }
其中的expr1为条件的初始值。expr2为判断的条件,通常都是用逻辑运算符号(logical operators)当判断的条件。expr3为执行statement后要执行的部份,用来改变条件,供下次的循环判断,如加一..等等。而statement为符合条件的执行部分程序,若程序只有一行,可以省略大括号 {}。
下例是用for循环写的的例子:

<?php 
for ( $i = 1 ; $i <= 10 ; $i ++) { 
echo "这是第".$i."次循环<br>" ; 
} 
?>

3、switch循环,通常处理复合式的条件判断,每个子条件,都是case指令部分。在实作上若使用许多类似的if指令,可以将它综合成switch循环。
语法如下:
switch (expr) { case expr1: statement1; break; case expr2: statement2; break; default: statementN; break; }
其中的expr条件,通常为变量名称。而case后的exprN,通常表示变量值。冒号后则为符合该条件要执行的部分。注意要用break跳离循环。
<?php 
switch ( date ( "D" )) { 
case "Mon" : 
echo "今天星期一" ; 
break; 
case "Tue" : 
echo "今天星期二" ; 
break; 
case "Wed" : 
echo "今天星期三" ; 
break; 
case "Thu" : 
echo "今天星期四" ; 
break; 
case "Fri" : 
echo "今天星期五" ; 
break; 
default: 
echo "今天放假" ; 
break; 
} 
?>

这里需要注意的是break;别遗漏了,default,省略是可以的。
很明显的,上述的例子用if循环就很麻烦了。当然在设计时,要将出现机率最大的条件放在最前面,最少出现的条件放在最后面,可以增加程序的执行效率。上例由于每天出现的机率相同,所以不用注意条件的顺序。
PHP 相关文章推荐
PHP 和 HTML
Oct 09 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
Jul 03 PHP
php正则表达式(regar expression)
Sep 10 PHP
php stream_get_meta_data返回值
Sep 29 PHP
php使用PDO方法详解
Dec 27 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
Apr 22 PHP
PHP获取用户访问IP地址的5种方法
May 16 PHP
PHP设计模式之适配器模式定义与用法详解
Apr 03 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 #PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
Mar 06 #PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 #PHP
php在服务器执行exec命令失败的解决方法
Mar 03 #PHP
Php Ctemplate引擎开发相关内容
Mar 03 #PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
Mar 01 #PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
Mar 01 #PHP
You might like
不错的PHP学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP chop()函数讲解
2019/02/11 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
vue 国际化 vue-i18n 双语言 语言包
2018/06/07 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Python延时操作实现方法示例
2018/08/14 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
Python 判断奇数偶数的方法
2018/12/20 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
Cinque网上商店:德国服装品牌
2019/03/17 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
销售人员个人求职信
2013/09/26 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Python答题卡识别并给出分数的实现代码
2021/06/22 Python