运算符
算术运算符
对变量和数组进行算术运算。
算术运算符:+,-,*,/,%
+:将连个或者多个数值相加
-:将两个数值相减
*:将两个数值相乘
/:将两个数值相除
%:取相除的余数
demo如下:
//算术运算符 $a = 100; $b = 11; //加运算 var_dump($a + $b); //111 //减运算 var_dump($a - $b); //89 //乘运算 var_dump($a * $b); //1100 //除运算 var_dump($a / $b); //9.0909090909090909090909 $f1 = 2.7; $f2 = 0.9; var_dump($f1 / $f2); //3,浮点型,当运算过程中有一个浮点型的数据的时候,计算的结果就是浮点型 $c = 10; $d = 0; var_dump($c / $d); //FALSE,0不能作为除数,否则会报警告 //模运算 var_dump($a % $b); //1 $a除以$b 除完之后看余数是多少 这里100 / 11 商9余1 所以是1
赋值运算符
将右边的值(计算结果)赋值给左边的变量
赋值运算符:=,+=,-=,*=,/=,%=,.=
=:赋值,将右边的值赋值给左边的变量
+=:将左边的变量的值加上右边的结果之后,再将值赋值给左边的变量
-=,*=,/=,%=,.= 都是一样的效果 注意: .= 不是简单的算术运算 它是一个字符串拼接
demo如下:
//赋值运算符 //=最简单赋值 $a = 100; $b = 10; $s = 'hello'; //+= 把左边的变量的值+右边的结果,然后将值赋值给左边的变量 $a += $b; //a:110 // $a += $b <======等价于======> $a = $a + $b //使用+= -= .=等类似这种符号的时候,必须保证左边的变量已经被初始化(定义好) @$c += $b; //等价于$c = $c + $d 如果未定义$c会报错,之所以会报错是因为$c未找到,@符号这个是错误抑制符号 //错误,提示变量c未定义 // /=,右边的结果不能为0 $a /= 0; //等价于//$a = $a / 0; //错误,除数不能为0 // .= 将左边的变量与右边的变量连接起来,赋值给左边的变量 $s .= $a; //等价于$s = $s.$a 输出:hello100 //a变量值类型是整型,但是当碰到点运算符(字符串运算符)的时候,系统会自动将整型转化成字符串再进行拼接。(所有类型,只要碰到点运算符都会变成字符串(简单类型)数组等类型除外)
逻辑运算符
多个(一个)表达式使用逻辑符号来进行运算。
逻辑运算符:与(&&),或(||),非(!)
&&:and左边和右边的条件必须同时为真,结果为真
||:or左边和右边的条件,只要一个为真,结果为真
!:对条件结果本身取反,条件为真则结果为假,条件为假则结果为真
demo如下:
//定义两个结果 $true = TRUE; //真 $false = FALSE; //假 //&&与运算 var_dump($true && $false); //false var_dump($true and $false); //false //||或运算 var_dump($true || $false); //true var_dump($true or $false); //true //!非运算 var_dump(!$true); //false var_dump(!$false); //true; var_dump(!$false); //true;
逻辑运算符又称之为短路运算符(&&和||)只有&&和||被称之为短路运算符
比较运算符
两个变量之间进行比较
比较运算符: >,>=,<,<=,==,!=,===,!==
如果两个比较的结果满足条件,那么返回真,否则返回假
===: 两个变量的类型和值都相同才为真
demo如下:
//定义变量 $a = 3; //整型 $b = 3.0; //浮点型 // ==是比较值 var_dump($a == $b); //true //===是比较值和类型 var_dump($a === $b); //false //mysql操作的返回值(插入数据),对返回值不能一概而论
三目运算符(又称为三元运算符)
参与运算的表达式有三个
语法:表达式1 ? 表达式2 : 表达式3
如果表达式1为真,那么计算表达式2,否则计算表达式3
demo如下:
//定义变量 $money = 100; //一般三目运算是用来得到结果,并将结果赋值给变量 $res = ($money >= 100) ? '有钱人' : '穷人'; //三元运算符 说明:问号前面的位置是判断的条件,如果满足条件时取问号后的结果否则的话就取冒号后的结果 echo $res; //输出有钱人 //三元运算应用于复杂应用如下: $res = ($money >= 100) ? ($money - 50) : ($money + 50); echo $res; //输出 50 //使用ifelse替代三目运算 if($money >= 100){ $res = '有钱人'; }else{ $res = '穷人'; } //注意:所有的三元运算都可以被使用if else替代 但是不是所有的if else都能够完全用三元运算符去做
自操作运算符
自己操作自己的运算符
自操作运算符:++和--
++:分为前置++和后置++,$a = $a + 1
前置++:++$a
后置++:$a++
demo如下:
//定义变量 $a = 10; //前置++ //var_dump(++$a); //11 //1. $a = $a + 1 //2. 先自加,后赋值 //后置++ //var_dump($a++); //10 先赋值后自加1 $b = 0; $c = 0; //++运算 $b = $a++; //b=10,a=11 //$b = $a++ 执行顺序如下: //$b = $a; //a = 10,b = 10 //$a = $a + 1; //a = 11 echo 'b = ' , $b ,' a = ',$a; //以上是程序运行流程 //$temp = $a; //$a++ ======== $a = $a + 1; //$b = $temp; echo '<br/>'; $c = ++$a; //12 因为上面的$a已经是11了 //=========== //$a++ ====== $a = $a + 1; //12 //$b = $a; //12 echo 'c = ' , $c ,' a = ',$a;
通常,在循环中,使用自运算比较,用户控制循环变量。
字符串运算
连接字符串
字符串运算符:.和 .=
$a = 'hello ';
$b = 'world';
.: 表示两个字符串连接,不会改变原来的变量本身
$c = $a . $b;
.=:将两个字符串连接起来后再赋值给左边的变量
$a .= $b <===========> $a = $a . $b;
还有位运算符= = 这里位运算先暂时不做记录。
流程控制
表达式:凡是有值返回的结构(语句)都可以称之为表达式
1. 所有的值本身都可以是表达式
2. 所有的运算符运算的结果也都是表达式
PHP的流程控制:顺序结构,分支结构,循环结构
顺序结构
代码从上往下顺序执行
$a = 10;
echo $a
分支结构
通过条件判断,选择多个步骤中的一个,体现到代码,有好几块代码,没一块代码的执行都必须满足一个条件,代码之间具有互斥性,执行某一块代码就意味着不再执行其他块代码
条件1:学习PHP
条件2:学习JAVA
条件3:学习.net
条件4:学习平面
PHP中有两大分支结构:if分支,switch分支
if分支语法:
最简if
if(条件)
{
//只要满足条件(条件为TRUE),那么执行语句块
//要执行的PHP代码
}
//如果不满足,则不执行if内部的语句块
标准if
if(条件)
{
//如果条件为TRUE,那么执行语句块1,不会执行语句块2
//语句块1
}
else
{
//如果条件为FALSE,那么执行语句块2,不会执行语句库1
//语句库2
}
复杂if:有多个else和if的嵌套
if(条件1)
{
//语句块1
}
elseif(条件2)
{
//语句块2
}
elseif(条件3)
{
//语句块3
}
……等 一直写
demo如下:
//最简的if if(true) { //输出 echo '结果为真'; } //标准if $money = 100; if($money >= 100) { echo '有钱人'; } else { echo '穷人'; } echo '<br/>'; //复杂if $money = 9999; if($money >= 10000) { echo '超级有钱人'; } else if($money >= 1000) { echo '很有钱人'; } else if($money >= 100) { echo '一般有钱人'; } else { echo '穷鬼'; } if的条件判断是顺序分支,从第一个条件开始判断,如果不满足第一个条件 则会转向第二个条件判断,如果满足第二个条件,从而执行第二个条件内的语句块。
注意: 语句块执行结束后(满足一个条件)就会跳出分支结构,从而不再判断(不再执行)
elseif 和else if的区别: elseif 只有php才支持此语法
switch分支
语法
switch(条件变量)
{
case 值1: //条件变量 == 值1
//语句块
break; //跳出当前分支,不再进行条件判断
case 值2:
。。。。
default:
//如果没有满足任何条件的语句
}
demo如下:
//通过数值来判断当前是星期几 $day = 6; //switch分支 switch($day) { case 1: echo '星期一'; //break; //如果case没有break,意味着执行完当前case之后,还会继续执行下面的case case 2: echo '星期二'; break; case 3: echo '星期三'; break; case 4: echo '星期四'; break; case 5: echo '星期五'; break; case 6: echo '星期六'; break; case 7: echo '星期天'; break; default: echo '您的输入错误,一个星期只有7天'; } //程序运行之后输出: 星期六
循环结构
某一段代码需要重复执行多次的时候,可以通过循环来控制,对同一段代码进行多次调用。
PHP的循环结构有:for,while,do-while,foreach
foreach循环:遍历数组,从数组中获取一个元素,将元素的值和下标(键)都分别赋值给某个指定的变量,从而通过对变量的访问实现访问某个数组元素的值。
for循环:已知初始化条件,范围
for(条件初始化;条件范围(判断);条件变化)
{
//循环体
//循环控制:continue,break
}
简单for循环demo如下:
//简单for循环 //输出1到10,每输出一个数,都换行 for($i = 1;$i <= 10;$i++) { echo $i.'<br/>'; }
for循环可以没有条件
for(;;)
{
//循环体
//循环控制
}
for循环没有条件demo如下:
//输出1到10 $i = 1; for(;;) { echo $i++,'<br/>'; //先输出当前值,后自增 //判断条件,适当时候强制退出循环:break if($i == 11) { break; } }
for循环中往往在第一个条件里,可以写多个表达式,表达式之间用逗号分割。
demo如下:
//输出1到10,不要输出5 for($i = 1,$end = 10;$i <= $end;$i++) { //判断$i是否等于5 if($i == 5) { //让循环重新来过,不再执行当前语句以下的循环体 continue; //中止本次循环,不再执行当前语句以下的循环体,重新开始下一次循环 } echo $i,'<br/>'; }
for循环执行步骤
for($i = 1①;$i <= 10②;$i++③)
{
echo $i,'<br/>'④;
}
while循环:只判断循环条件,循环条件的变更是在循环体内的循环。
while循环语法如下:
while(循环条件)
{
//循环体
//循环条件的变更
}
demo如下:
//输出1到10,5不要 //在循环开始前必须先初始化循环条件 $i = 1; //循环开始 while($i <= 10) { //判断当前$i是否为5 if($i == 5) { //变更循环条件 $i++; //中止当前循环 continue; } //当if或者else的语句块只有一条语句的时候,可以省略大括号 //i不等于5,循环变量变更 echo $i++,'<br/>'; }
do-while循环:跟while循环是相似的,while循环是先判断条件后执行循环体,do-while不论如何会先执行一次循环体,然后再判断条件。
do-while循环语法如下:
do{
//循环体
//循环条件变更
}while(条件)
do-while循环demo如下:
//从1开始输出,如果达到10,自动终止 $i = 1; do { //判断是否满足条件,如果当前i等于10,则终止循环 if($i == 11) break; //输出 echo $i++,'<br/>'; }while(1); //while(1)表示永远为真,while里面最终是要得到一个布尔值,所以其他值会被自动转化成布尔值,而1会被转化成TRUE //通过while条件判断终止循环 //表示当程序执行带该语句时,后面的语句不再执行 //$i = 0; do { //输出 echo $i++,'<br/>'; //输出原来i的值11,但是会自增1,变成12 }while($i <= 10); //i=12
需求:从1到10,每个数字都放到一个行的一个列中(table)中。
模板语法:专门为了在嵌入到html代码中的时候,为了将对应的大括号所带来的视觉上的不友好给替代
for()
{
}
====è
for():
endfor;
模板语法:if,for,while,foreach
if()
{
}
====è
if():
endif;
for()
endfor; 等其它while foreach的模板语法和if for都是一样的,就不一一写出来了。
声明:禁止任何非法用途使用,凡因违规使用而引起的任何法律纠纷,本站概不负责。
精彩评论