php中的运算符
比较运算符
==:两边操作数值相等即可
===两边操作数不仅值相等,类型也要相同
!==两边操作数值不相等
<=> 太空船运算符[当左边的小于右边输出-1 当左边的大于右边的输出1 当两边相等输出0]
例:
// == 两边操作数值相等
var_dump(100=='100');// 输出true
// === 两边操作数值和类型都相等
var_dump(200==='200');// 返回false 两边操作数类型不同
// !== 两边操作数比较值,值不相等返回true
var_dump(200!==100);
// 太空船运算符
var_dump(10<=>20);// 输出 -1
var_dump(10<=>10);// 输出 0
var_dump(20<=>10);// 输出 1逻辑运算符
&&:逻辑与运算符,两边的表达式全为true,否则返回false
||:逻辑或运算符,两边的表达式只要有一个为true则返回true
例:
var_dump((10>8)&&(10>5));// 输出true 两边表达式全为true
echo'
';
var_dump((10>8)&&(5>15));// 输出false 右边表达式为false 所以输出false
echo'
';
var_dump((10>8)||(5>15));// 输出true 左边表达式为true故输出true
短路求值
第一个表达式不成立时直接走else区间不会再去计算第二个表达式
// 以下面例子为例 当$username表达式不成立时直接走else输出no不会再计算$username === 'admin';
例:
$username='张三';
if($username&&$username==='admin'){
echo'ok';
}else
echo'no';
}三元运算符
表达式 ? 表达式为走的真区间 : 表达式为假走的区间;
??:三元运算中的合并运算(用于执行isset()检测的三元运算的快捷方式)
例:
// 常规写法
$price=4000;
if($price>3000){
echo'有点贵';
}else{
echo'买它';
}
// 三元运算符写法
echo $price>3000?'有点贵':'买它';
// 三元运算默认值
$password='123456';
// 当$password存在时输出$password的值否则输出给定的默认值
echo isset($password)?$password:'root';
// 使用??简化:isset() + 三元运算 = 变量默认值 方式
echo $password??'root';php中的分值结构
单分支结构
if(条件) { 执行代码 }
例:
$price=500;
// 1.单分支结构
if($price>=500){
// 价格大于等于500打九折
echo $price*0.9;
}
简写:当流程控制中只有一行代码的时候,可以省略大括号
例:
$price=500;
if($price>=500)echo $price*0.8;单分支模板语法
if(条件) : 执行代码 endif[就是把初始大括号用冒号代替,结束大括号用指定关键字代替]
// 模板语法
例:
$price=500;
if($price>=500):
// 价格大于等于500打九折
echo $price*0.9;
endif;
// 一行简写
if($price>=500):echo $price*0.5;endif;双分支结构
if(条件) { true执行代码 } else { false执行代码 }
例:
$price=300;
if($price>=300){
// 当价格大于等于300是走这个区间打九折
$payment=$price*0.9;
}else{
// 当价格不满足表达式价格小于300时走这个区间,原价格
$payment=$price;
}
// 打印最后结账价格
var_dump($payment);双分支模板语法
if(条件) : true执行代码 else : false执行代码 endif
注意:else前面的花括号直接去掉没有东西代替
例:
$price=300
if($price>=300):
$payment=$price*0.9;
else:
$payment=$price;
endif;
var_dump($payment);多分支结构
多分支:if(条件)else { 执行代码 } elsef(条件){执行代码} else { 默认值 }
注意:这里的elseif根据需求来写上面两个只是例子
例:
$price=5000;
if($price>1000&&$price<2000){
$payment=$price*0.9;
}elseif($price>2000&&$price<3000){
$payment=$price*0.7;
}elseif($price>3000&&$price<4000){
$payment=$price*0.6;
}elseif($price>4000&&$price<=5000){
$payment=$price*0.5;
}else{
// 默认值(当所有条件都不符合时)
$payment=$price;
}
echo'实付价钱'.$payment;多分支模板语法
if(条件):执行代码; elseif(条件):执行代码;else:默认值;endif
例:
$price=3000;
// 模板语法
if($price>1000&&$price<2000):
$payment=$price*0.9;
elseif($price>2000&&$price<3000):
$payment=$price*0.7;
elseif($price>3000&&$price<4000):
$payment=$price*0.6;
elseif($price>4000&&$price<=5000):
$payment=$price*0.5;
else:
// 默认值(当所有条件都不符合时)
$payment=$price;
endif;
echo'实付价钱'.$payment;switch多分支[简化多分支]
switch(条件){
case表达式:
执行代码
break;
default:
执行代码
break;
}例:
$discount=0.7;// 折扣
$price=6000;// 价钱
switch($discount){
case0.7:
$payment=$price*$discount;
break;
case0.8:
$payment=$price*$discount;
break;
case0.9:
$payment=$price*$discount;
break;
default:
$payment=$price;
break;
}
echo'实际结账啊'.$payment;switch模板语法
// 模板语法
switch(条件):
case表达式:
执行代码
break;
default:
执行代码
break;
endswitch;例:
$discount=0.7;// 折扣
$price=5000;// 价钱
switch($discount):
case0.7:
$payment=$price*$discount;
break;
case0.8:
$payment=$price*$discount;
break;
case0.9:
$payment=$price*$discount;
break;
default:
$payment=$price;
break;
endswitch;
echo'实际结账啊'.$payment;php循环
while循环
// while循环(入口循环:入口判断) while (条件) { 需要执行的代码 }
current($cities); // 输出数组中的当前元素
next($cities); // 指针下移
reset($cities);数组指针复位重新指向第一个
例:
$cities=['海淀','丰台','朝阳','大兴','昌平'];
echo current($cities);// 输出数组中的当前元素 "海淀"
next($cities);// 指针下移
echo current($cities);// 输出丰台 上面指针下移所以输出丰台
while($city=current($cities)){
echo $city,'
';
// 前移指针
next($cities);
}
// 输出结果依次输出,海淀,丰台,朝阳,大兴,昌平while模板语法
while(条件): 执行代码 endwhile
例:
$cities=['海淀','丰台','朝阳','大兴','昌平'];
while($city=current($cities)):
echo $city,'
';
// 前移指针
next($cities);
endwhile;do {执行代码} while (条件); 没有模板语法
do {执行代码} while (条件);判断型循环:出口判断 无论条件成不成立先执行一次
例:
$cities=['海淀','丰台','朝阳','大兴','昌平'];
do{
echo $city;
next($cities);
}while($city=current($cities));
// 输出结果丰台,朝阳,大兴,昌平因为在判断条件前限制性了一次数组指针下移for循环
for (循环变量的初始化; 循环条件; 更新循环条件){ 执行代码 }
count(变量名); 数数,数数组中的元素个数
例:
这里$i的起始值是数组中元素的下标值[下标值是从0开始的]
for($i=0;$i
var_dump($cities[$i]);echo'
';
}for循环模板语法
for (循环变量的初始化; 循环条件; 更新循环条件): 执行代码 endfor
例:
for($i=0;$i
var_dump($cities[$i]);echo'
';
endfor;模板语法在模板中的应用
// 数据表查询结果通常是一个二维数组,用二维数组来模拟
$users=[
['id'=>1,'name'=>'zhu','grade'=>60],
['id'=>2,'name'=>'admin','grade'=>50],
['id'=>3,'name'=>'peter','grade'=>20],
];
?>
<?php echo'这是title'?><?php echo $users[$i]['id']?> | <?php echo $users[$i]['name']?> | <?php echo $users[$i]['grade']?> |
输出结果: