PHP语法(三)
运算符
算术运算符
一元运算符 |
二元运算符 |
– |
+ |
++ |
– |
— |
* |
/ |
|
% |
脚下留心:
- PHP中的“+”只能做数字运行,不能做字符串运算。
- ++和–要注意前置和后置的问题
比较运算符(关系运算符)
运算符 |
描述 |
> |
大于 |
>= |
大于等于 |
< |
小于 |
<= |
小于等于 |
== |
等于 *只要能转成相同的值就是相等 |
=== |
全等于 *不但值相等,数据类型也要相等 |
!=或<> |
不等于 |
!== |
不全等 |
注意:比较运算符的运算结果是布尔型的
不等于
逻辑运算符
逻辑运算符是用来连接比较运算符的。
运算符 |
描述 |
&&或and |
与(并且) |
||或or |
或(或者) |
! |
非(取反) |
练习
true && true true
true && false false
false && true false
false && false false
true || true true
true || false true
false || true true
false || false false
!true false
!false true
例题
赋值运算符
运算符 |
描述 |
= |
赋值 |
+= |
a+=b a=a+b |
-= |
|
*= |
|
/= |
|
%= |
总结 := 赋值 == 等于 === 全等
字符串连接符(.)
错误控制运算符(错误抑制符 @)
@用来屏蔽表达式错误,只对表达式有效。
三元运算符(?:)
语法:表达式?值1:值2
如果表达式为真,返回值1,否则返回值2
位运算符(了解)
运算符 |
描述 |
按位与(&) |
两个相同的位都是1,结果才是1,有一位是0结果就是0 |
按位或(|) |
两个位只要有一个是1结果就是1 |
按位异或(^) |
两个位不同为1,相同位0 |
按位非(~) |
按位取反 |
位左移(<<) |
位向左移动 |
位右移(>>) |
位向右移动 |
例题
运算符的优先级
- 第一步:小括号的优先级最高
- 第二步:先乘除后加减
- 第三步:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
$a=5;
$b=6;
$a>$b && ($a+$b)>$b*2 || !($a==$b)
=false && false || true
=true
两个常用于判读变量的函数
在处理一个没有定义的变量的时候回报错
我们在使用变量之前,向判读一下变量,判读变量的函数有两个
函数 |
说明 |
isset() |
检测变量是否设置,并且设置的值不是null |
empty() |
检查变量是否为空,只要能转成 false的都为空。 |
例题:
流程控制的三大基本结构
- 顺序结构
- 判断
- 循环
判断语句
语法结构
- 单分支
if(条件){
}
- 双分支
if(条件){
}else{
}
- 多分支
if(条件){
}
elseif(条件){
}
elseif(条件){
}
else{
}
注意:多分支else和if之间是没有空格的。
- 多路选择
Switch(表达式){
case 常量:
[break];
case 常量:
[break];
default
}
例题:判断闰年(双分支)
- empty():如果$_POST为空表示没有post提交,不为空表示表达有post提交
- trim():去除字符串两边的空格
- is_numeric():判断变量是否是数字或数字字符串
- $year+=0;将$year转成数字类型
- is_int():判断变量是否是整型
<?php
if(!empty($_POST)) { //数组不为空说明点击了提交按钮
$year=trim($_POST[‘year’]); //获取年份,trim()用来去字符串两边的空格
if($year==”){
echo ‘您没有输入’;
}else{
if(!is_numeric($year)){
echo ‘您输入的不是数字’;
}else{
$year+=0; //将$year转成数字类型
if(is_int($year)){ //is_int()检查变量是否是整型
if($year<1)
echo ‘您输入的年份必须正整数’;
else {
/**
*润年的条件
*1、能被4整除,但是不能被100整除
*2、能被400整除的年份
*/
if($year%4==0 && $year%100!=0 || $year%400==0)
echo “{$year}是闰年”;
else
echo “{$year}是平年”;
}
}else{
echo ‘您输入的年份不是整数’;
}
}
}
}
?>
<form method=”post” action=””>
请输入年份: <input type=”text” name=”year”> <br />
<input type=”submit” name=”button” value=”判读闰年”>
</form>
例题:判断成绩(多分支)
<?php
if(!empty($_POST)) {
$ch=trim($_POST[‘ch’]); //获取语文成绩
$math=trim($_POST[‘math’]); //获取数学成绩
if($ch==” || !is_numeric($ch) || $ch<0 || $ch>100)
echo ‘语文成绩必须在0-100之间’;
elseif($math==” || !is_numeric($math) || !($math>=0 && $math<=100))
echo ‘数学成绩必须在0-100之间’;
else{
$avg=($ch+$math)/2;
echo ‘您的平均分是:’.$avg.'<br>’;
if($avg>=90)
echo ‘孩子,你是我的骄傲’;
elseif($avg>=80)
echo ‘好样的,宝贝’;
elseif($avg>=70)
echo ‘您离优秀不远了’;
elseif($avg>=60)
echo ‘您还是有潜力的’;
else
echo ‘看来你不努力是不行了’;
}
}
?>
<form method=”post” action=””>
语文: <input type=”text” name=”ch”> <br />
数学: <input type=”text” name=”math”> <br />
<input type=”submit” name=”button” value=”提交”>
</form>
例题:switch-case
<div id=”shi” class=””>
锄禾日当午,<br>
汗滴禾下土。<br>
谁知盘中餐,<br>
粒粒皆辛苦。
</div>
<form method=”post” action=””>
<select name=”color”>
<option value=””>—请选择颜色—</option>
<option value=”1″>红色</option>
<option value=”2″>绿色</option>
<option value=”3″>蓝色</option>
</select>
<input type=”submit” name=”button” value=”确定”>
</form>
<?php
if(!empty($_POST)) {
$color=$_POST[‘color’];
switch($color) {
case 1:
$color=’#FF0000′;
break;
case 2:
$color=’#009900′;
break;
case 3:
$color=’#0000FF’;
break;
default:
$color=’#000000′;
}
/*
echo ‘<script type=”text/javascript”>’;
echo “shi.style.color='{$color}'”;
echo ‘</script>’;
*/
//换一种写法
?>
<script type=”text/javascript”>
shi.style.color='<?php echo $color?>’;
</script>
<?php
}
?>
注意如下两种写法
替代语法
左大括号变冒号(:),右大括号变endXXX
单分支
if(条件):
endif;
双分支
if(条件):
//代码1
else:
//代码2
endif;
多分支
if(条件):
//代码1
elseif(条件):
//代码2
else:
//代码3
endif;
switch-case
switch(表达式):
case :
break;
endswitch;
else if和elseif的区别
elseif是多分支;else if是嵌套if语句
else if等价于
else{
if(){
}
}
验证一下
循环语句
循环的分类
- for
- while
- do-while
- foreach
语法
- for循环
for(初始值;条件;增量){
//循环体
}
- for循环的替代语法
for(初始值;条件;增量):
//循环体
endfor;
- while循环
while(条件){
//循环体
}
- While循环的替代语法
While(条件):
Endwhile;
do-while循环
do
{
//循环体
}while(条件)
注意:判断和循环体中如果有一句代码,大括号是可以省略的。
循环的思考
- 在一个循环了n次的循环中,初始值、条件、增量各执行了几次
答:初始值1次,条件n+1次,增量n次
- for($i=1;$i!=5;$i++)循环了几次?
答:循环4次
- 循环执行完毕后,$i的变量是否存在?
答:存在
例题:三种循环实现从1加到任意数
<?php
if(isset($_POST[‘button’])) {
$num=$_POST[‘num’];
//for循环实现
$sum=0;
for($i=1; $i<=$num; $i++) {
$sum+=$i;
}
echo “for循环实现结果是:{$sum}<br>”;
//while循环
$sum=0;$i=1;
while($i<=$num) {
$sum+=$i++;
}
echo “while循环实现结果是:{$sum}<br>”;
//do-while循环
$sum=0;$i=1;
do
{
$sum+=$i++;
}while($i<=$num);
echo “do-while循环实现结果是:{$sum}<br>”;
}
?>
<form method=”post” action=””>
请输入一个数: <input type=”text” name=”num”> <br />
<input type=”submit” name=”button” value=”提交”>
</form>
例题:翻转数组
- 给数组添加元素
- 两个变量调换
- for循环中初始值,条件,增量的部分可以放多个表达式
面试题:不通过第三个变量如何实现两个变量的交换?
foreach循环
foreach循环用来遍历数组
语法:
//语法一
foreach(数组 as 值){
}
//语法二
foreach(数组 as 键=>值){
}
//foreach也支持替换语法
foreach(数组 as 值):
endforeach;
例题
例题:
跳转语句
- break:中断所有循环
- continue:跳出当前循环进入下一个循环
注意:
- break和continue默认中断1重循环。
- 如果一个循环只循环一次,break和continue的结果是一样的
- switch的本质是循环了一次的循环
例题
包含文件
相同的代码出现在多个页面中,不便于维护,我们将相同的代码分离开来,在需要用到的页面中引入包含文件即可。
解决:我们将相同的代码分离开来,在需要用到的页面中引入包含文件即可
包含的语法
- include ‘地址’:可以包含多次,如果有错,报警告错误,继续执行
- require ‘地址’:可以包含多次,如果有错,报致命错误,终止执行。
- include_once ‘地址’:只能包含一次,区别和include一样
- require_once ‘地址’:只能包含一次,区别和require一样
如果HTML包含文件中有PHP代码,包含文件的PHP代码是执行的。 因为包含文件就相当于拷贝粘贴到PHP页面中了。
作业
- PHP实现计算器
- 九九乘法表