一.运算符(Operator)
1.运算符
2.运算符分类
(1)按功能分
(2)按操作数个数分
3.按功能分
(1)算术运算符
(2)递增递减
(3)字符运算符
(4)赋值运算符
(5)比较运算符: > >= < <= ==
!= <> ===(全等于)
!==(不全等于)
说明:
a.比较运算符结果布尔值
b.===(全等于):值和类型都相同才为真
否则为假
c.===(不全等于):值和类型都相同为假
否则为真
d.比较运算类型转换
(a)字符串或null跟字符串比较
如果数值比较按大小
如果字母比较按位字母比较
如果数字和字母比较按位ASCII码比
null转为 空字符串
(b)布尔值跟其他类型比较
按布尔值比较 true > false
(c)数值或字符串跟 数值比较
按数字比较
(d)===(全等于)和===(不全等于)的使用
原理:变量会根据程序环境自动转换,
例如: 0,0.0,'0'自动转为布尔值
false,为了避免自动转换产生的错
误,用===(全等于)和===(不全等于)
解决
(6)逻辑运算符: &&,and(与,并且) ||,or(或者)
!(非) xor (异或)
说明:
a. 逻辑运算符结果布尔值
b. &&,and(与,并且):第一个表达式和第
二个表达式都为真才为真
否则为假
c.||,or(或者):第一个表达式和第
二个表达式都为假才为假
否则为真
d.xor (异或) :第一个表达式和第
二个表达式布尔值结果不同
为真相同为假
e.短路原理:第一个表达式的结果就能确定
整个表达式结果,第二个表达式
忽略不执行,产生短路
&&,and(与,并且):第一个表达式为假
产生短路,第二个表
达式忽略不执行
||,or(或者) :第一个表达式为真
产生短路,第二个表
达式忽略不执行
(7)错误抑制符: @,有错误忽略,没错误不忽略
说明: 一般用在函数或表达式前面
(8)执行运算符:反引号 ``
说明: PHP命令行模式
4.按操作数个数分
(1)一元运算符:1个操作数
++$var --$var @ !
(+)正号 (-)正号等
(2)二元运算符:2个操作数
+ - * / % 等等
(3)三元运算符:3个操作数
expr1?expr2:expr3;
说明:
a.expr1如果为真那么执行expr2
否则 expr3
b.expr1?expr1:expr3 PHP5.3以上支持
c.expr1??expr3 PHP7.0 支持
5. 运算符优先级
(1)一元运算符和赋值运算符属于右结合
(从右往左运算)其他都属于左结合
(从左往右运算)
(2)运算符优先级高的先运算,运算符优先级
相同按左结合或右结合运算
(3)有短路先考虑短路
(4) 用() 可以改变优先级顺序
(5) 查看优先级表
一元运算符
二元运算符(算术 比较 逻辑 先&&后||)
三元运算符 赋值运算符 and xor or
二.流程控制语句:
1. 原理:程序是自上而下逐行执行的,
如果想通过条件执行某段代码,或重复
执行某段代码,那就要用到流程控制语
句
2.流程控制语句分类
(1)条件分支语句
(2)循环语句
3.条件分支语句
if( )小括号中的条件 只能是 布尔类型值,通常由比较运算符或逻辑运算符组成的表达式所计算的结果值或是返回布尔型的函数等
如果传入其他类型的值,也会自动转换为布尔型的true或false
(1) if单分支语句:
if(expr条件){
...
}
说明:
a.如果expr条件为真那么执行if
后里的代码段,否则不忽略执行
if语句执行后面的顺序语句
b.如果if里的代码段只有一条语句
可以省略大花括号
(2) if双分支语句:
if(expr条件){
...
}else{
...
}
说明:
a.如果条件为真,那么执行if后面代码段
否则执行else后面的代码段
b. 二选一
(3) if多分支语句:
if(expr1){
...
}elseif(expr2){
...
}elseif(expr3){
...
}......
[else{
echo '条件都为假执行的语句组';
}]
说明:
a.多分支语句根据不同的条件执行对
应的代码段,如果某个条件为真那
执行后面对应的代码段然后结束多
分支语句,如果条件都为假,并且else
存在那执行else后面的代码段然后结
束多分支语句
b. 至多多选一
(4)if嵌套
a.if中写嵌套
if(expr1){
if(expr2){
//写嵌套
}else{
...
}
}else{
...
}
a.else中写嵌套
if(expr1){
...
}else{
if(expr2){
...
}else{
//写嵌套
}
}
(5)switch 语句
switch() 数据类型只能是 整型 或者 字符串,不能是布尔值
switch($变量名){
case value:
...
break;
case value:
...
break;
case value:
...
break;
......
default:
...
break;
}
说明:
a.switch 语句:实现if多分支语句效果
b.判断变量名等于某个特定值
c. case 等同 == 松散比较
d. switch 语句没有结束多分支语句的
功能 break或continue 结束分支语句
循环
1.什么时候用循环:重复的事情和有规律的事情用循环
2.for循环
(1)格式
for(expr1;expr2;expr3){
...
}
说明:
a.expr1:无条件执行一次,一般给变量
赋初始值
b.expr2:每次循环时都执行的语句,
作用判断循环的条件
(循环终止条件)
c.expr3:每次循环后(循环体最后)执行
的语句,作用变量步长(增量,减量)
for特殊使用
(1)省略表达式
for(;;){
...
}
(2)每个表达式可以写多条语句
说明:
a.每个表达式用分号隔开
一个表达式的多条语句
用逗号隔开
b.第一个表达和第三个表达式可以写多条
c.第二个表达写多条语句只执行最后一条
语句
3. while 和 do...while
while(布尔型)通常用于循环次数未知的循环结构
(1) 格式
while(expr条件){
...
}
do{
...
}while(expr条件);
说明:
a.for,while先判断条件后执行语句
do...while 先执行语句后判断条件
b.当第一个判断条件为假,do...while
比while多执行一次
c. for 一般实现精确次数循环
while 可以实现不定次数循环
4. break,continue
说明:
a.break 用 switch和循环中
作用结束程序执行,
如果用在多重循环中结束一层循环
可以通过接受一个可选的数字参数来确定跳出几重循环语句或几重switch语句
b.continue用 switch和循环,
如果用switch中与break作用一样;
如果用在循环中跳过当前循环,后面的代码执行下一次循环(跳过一次循环)
可以通过接受一个可选的数字参数来确定跳出几重循环语句或几重switch语句