运算符
1. 算术运算符
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | + |
$a+$b |
$a与$b 的和 |
2 | - |
$a-$b |
$a与$b 的差 |
3 | * |
$a*$b |
$a与$b 的积 |
4 | / |
$a/$b |
$a与$b 的商 |
5 | % |
$a%$b |
$a与$b 的余(模) |
6 | ++ |
$a++/++$a |
先用再加/先加再用 |
7 | -- |
$a--/--$a |
先用再减/先减再用 |
8 | ** |
2**4 |
幂运算:2 的 4 次方 |
2. 字符串运算符
运算符 | 示例 | 描述 |
---|---|---|
. |
$str1 . $str2 |
连接运算,返回连接之后的字符串 |
3. 赋值运算符
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | = |
$a = 10 |
将表达式的值赋给变量 |
2 | += |
$a += 10 |
$a = $a + 10; |
3 | -= |
$a -= 10 |
$a = $a - 10; |
4 | *= |
$a *= 10 |
$a = $a * 10; |
5 | /= |
$a /= 10 |
$a = $a / 10; |
6 | %= |
$a %= 10 |
$a = $a % 10; |
7 | .= |
$a .= 'a' |
$a = $a . 'a'; |
上机演示:
$s=100;
// s++先不加,++s先加,s--先不减,--s先减
// var_dump($s++);
// var_dump($s);
// var_dump ('<hr>');
// var_dump($s--);
// var_dump($s);
// var_dump (++$s);
// var_dump($s);
// var_dump(--$s);
// var_dump($s);
4. 比较运算符
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | > |
$a > $b |
大于 |
2 | >= |
$a >= $b |
大于或等于 |
3 | < |
$a < $b |
小于 |
4 | <= |
$a <= $b |
小于或等于 |
5 | == |
$a == $b |
等于 (值相等即可) |
6 | === |
$a == $b |
全等于(二边值与类型全等) |
7 | != |
$a != $b |
不相等 |
8 | !== |
$a !== $b |
不全等 |
9 | <=> |
$a <=> $b |
太空船php7+ 1,-1 0 |
上机演练轨迹(一个一个演练的,演练完一个注释一个):
// 字符串连接
// echo('<hr>');
// echo('php'.'中文网'.'朱老师'.'<br>');
// echo('php'. 28 .'朱老师'.'<br>');
// $s = 100 ;
// $s+=100;
// echo $s;
// $s-=50;
// echo $s;
// $s*=50;
// echo $s;
// $s/=10;
// echo $s;
$s%=9;
echo $s;
$s.=50;
// echo $s;
// echo('<br>');
//全等是属性和值都相等,等于是两个数值相等
// var_dump(100==='100');
// var_dump(100=='100');
太空船上机操作:
// 太空船,这个返回是0
var_dump(50<=>50);
太空船运算符返回三种结果:
序号 | 运算 | 结果 |
---|---|---|
1 | $a > $b |
返回>0 的整数 |
2 | $a < $b |
返回<0 的整数 |
3 | $a = $b |
返回=0 的整数 |
5. 逻辑运算符
序号 | 运算符 | 示例 | 描述 |
---|---|---|---|
1 | && |
$a && $b |
逻辑与 |
2 | ! |
!$a |
逻辑非(取反) |
3 | xor |
$a xor $b |
逻辑异或 |
| 4 | ||
| $a || $b
| 逻辑或 |
上机演示:
// ||相当于加法(或)
var_dump(3<4||1>3);
// &&相当于乘法(与)
var_dump(3<4&&1>3);
6. 三元运算符
序号 | 运算符 | 示例 | 描述 | 场景 |
---|---|---|---|---|
1 | ?: |
$a ?: $b |
仅判断表达式true/false |
简化双分支 |
2 | ?? |
$a ?? $b |
判断变量存在且不为 null |
设置默认值 |
上机演练:
// $username='abc';不注释显示abc,注释了显示123
$username=$username??'123';
echo $username;
7. 错误屏蔽符
运算符 | 示例 | 描述 | 场景 |
---|---|---|---|
@ |
@(10/0) |
屏蔽所有运行错误 | 线上生产环境 |
语法错误不能被屏蔽,主要是为了防止信息泄露给客户。在浏览器被打印。
上机演示:
echo @$name;
流程控制
1. 分支结构
序号 | 类型 | 语法 | 模板语法 |
---|---|---|---|
1 | 单分支 | if(){...} |
if(): ... endif; |
2 | 双分支 | if(){...} else {...} |
if(): ... else: ... endif; |
3 | 多分支 | if(){...} elseif {...} else {...} |
if(): ... elseif: ... else: ... endif; |
4 | switch |
switch() {case: ... break...} |
switch(): ...endswitch; |
单分支上机演练:古驰打折季
<?php
//购买古驰产品高于一万一千元打七折,我买了一万元,不打折。
$gucci=10000;
$buynow=$gucci;
if($gucci>11000)$buynow=$gucci*0.7;
echo '金额:'.$buynow;
单分支模板语法
$gucci=10000;
$buynow=$gucci;
if($gucci>11000):
$buynow=$gucci*0.7;
endif;
echo '金额:'.$buynow;
双分支语法上机
$gucci=10000;
$buynow=$gucci;
if($gucci>11000){$buynow=$gucci*0.7;}
else{
$buynow=$gucci;
}
echo '金额:'.$buynow;
双分支模板写法:
$gucci=10000;
$buynow=$gucci;
if($gucci>11000):$buynow=$gucci*0.7;
else:
$buynow=$gucci;
endif;
echo '金额:'.$buynow;
简化多分支上机
$gucci=30000;
switch(true)
{
case $gucci>10000&& $gucci<20000:
$buynow=$gucci*0.7;
break;
case $gucci>=20000:
$buynow=$gucci*0.5;
break;
default:
$buynow=$gucci;
}
echo $buynow;
多分支简写模板语法
$gucci=30000;
switch(true):
case $gucci>10000&& $gucci<20000:
$buynow=$gucci*0.7;
break;
case $gucci>=20000:
$buynow=$gucci*0.5;
break;
default:
$buynow=$gucci;
endswitch;
echo $buynow;
多分支上机演练
//得到结果是15000
$gucci=30000;
if($gucci>10000&& $gucci<20000){
$buynow=$gucci*0.7;
}
elseif($gucci>=20000){
$buynow=$gucci*0.5;
}
else{
$buynow=$gucci;
}
echo $buynow;
多分支模板写法
if($gucci>10000&& $gucci<20000):
$buynow=$gucci*0.7;
elseif($gucci>=20000):
$buynow=$gucci*0.5;
else: $buynow=$gucci;
endif;
echo $buynow;
单值判断上机演练:
$gucci=30000;
$sales=0.6;
switch($sales) :
case 0.5:
$buynow=$gucci*0.5;
break;
case 0.8:
$buynow=$gucci*0.8;
break;
default:
die('对不去,折扣不支持');
endswitch;
echo $buynow;
2. 循环结构
序号 | 类型 | 语法 | 模板语法 |
---|---|---|---|
1 | 入口判断型 | while(){...} |
while(): ... endwhile; |
2 | 出口判断型 | do {...} while(); |
do : ... while(); |
3 | 计数型 | for(){...} |
for () : ... endfor; |
循环控制关键字:
序号 | 关键字 | 描述 |
---|---|---|
1 | continue |
终止本次循环,提前进入下一轮 |
2 | break |
跳出本层循环 |
入口判断型上机演练:
<?php
$car = ['宝马','奔驰','沃尔沃','奥迪'];
while($cars=current($car)){
echo $cars.'<br>';
next($car) ;
}
入口判断型循环模板写法:
<?php
$car = ['宝马','奔驰','沃尔沃','奥迪'];
while($cars=current($car)):
echo $cars.'<br>';
next($car) ;
endwhile;
出口判断型循环上机演示:
$car = ['宝马','奔驰','沃尔沃','奥迪'];
do {
$cars=current($car);
echo $cars. '<br>';
next($car);
} while($cars=current($car));
计数型循环上机演练
$car = ['宝马','奔驰','沃尔沃','奥迪'];
echo '数组中有多少个'. count($car);
echo '<br>';
for ( $i = 0 ;$i < count($car); $i++) :
echo $car[$i].'<br>';
endfor;
continue(继续的意思)用法上机测试:
$car = ['宝马','奔驰',false,null,'沃尔沃','奥迪'];
// 会执行'宝马','奔驰','沃尔沃','奥迪',跳过false和null
// echo '<br>';
for ( $i = 0 ;$i < count($car); $i++) :
if(!$car[$i])continue;
echo $car[$i].'<br>';
endfor;
break(打断)用法上机操练
$car = ['宝马','奔驰',false,null,'沃尔沃','奥迪'];
// 只执行宝马,奔驰,就打断了。
// echo '<br>';
for ( $i = 0 ;$i < count($car); $i++) :
if(!$car[$i])break;
echo $car[$i].'<br>';
endfor;
感想:
逻辑都懂,就是总出错,有的地方应该是:
写成了;
有的地方应该写;
又忘了写,有的地方写了`;``又因为是全角导致错误不知道在哪里,进度贼慢。崩溃呀。下一步如果再灵活掌握估计我就完蛋了,这个东西得熟能生巧,只有特别熟了,成为一种习惯性思维(不用过脑子了,就和开车一样)操作了估计才能游刃有余的做项目,现阶段就和刚开始学车一样,得想着离合和油门,方向盘配合啥的,等多练多写,成为自己的东西后,才能草木皆可为剑。加油,享受这种痛苦吧。任何技能的习得都有这么个过程。