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 相关文章推荐
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
PHP迅雷、快车、旋风下载专用链转换代码
Jun 15 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
Nov 01 PHP
PHP模块 Memcached功能多于Memcache
Jun 14 PHP
最新版本PHP 7 vs HHVM 多角度比较
Feb 14 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
Yii2实现上下联动下拉框功能的方法
Aug 10 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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常用代码
2006/11/23 PHP
php 中文处理函数集合
2008/08/27 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
php中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
2019/04/03 PHP
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
2015/03/05 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
jQuery实现div跟随鼠标移动
2020/08/20 jQuery
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
vue项目常用组件和框架结构介绍
2017/12/24 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
了解JavaScript表单操作和表单域
2019/05/27 Javascript
python对数组进行反转的方法
2015/05/20 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
Python 创建守护进程的示例
2020/09/29 Python
python 输入字符串生成所有有效的IP地址(LeetCode 93号题)
2020/10/15 Python
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
毕业生求职推荐信
2013/11/04 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
对教师的评语
2014/04/28 职场文书
毕业典礼邀请函
2015/01/31 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
销售合作意向书范本
2015/05/08 职场文书
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
浅谈JavaScript作用域
2021/12/06 Javascript
MySQL创建定时任务
2022/01/22 MySQL