批改状态:合格
老师批语:
1.值传递
// 赋值$a=3;// 更新$b=$a;
2.引用传递
在变量前 加 & 表示引用
使用引用传递,在值改变时,会同步更新原始变量的值
在引用传递时,并不是创建了一个新变量,而是通过引用的方式,用一个别名将原始变量引用,所以当值改变时,原始变量的值也会改变
// 赋值$a=3;// 引用传递$b=&$a;$b=5;echo $a;
1.基本类型
1.1 int 整数
1.2 float 浮点数
1.3 string 字符串
1.4 boolean 布尔类型
2.复合类型
将几个不同的基本类型值放在一起,叫复合类型
2.1数组:数组中可以放入不同的数据,是一种复合类型
2.2对象:对象也是一种复合类型
3.unll 类型(空类型)
当变量没赋值,直接赋值为null和被销毁时,返回null
4.资源类型
4.1文件路径,网址等都是资源类型
5.回调类型 callback
PHP中用字符串来传递函数,在PHP中,可以以任何方式传递函数,所以回调函数不止包括函数,还包括对象方法,静态方法等
注释:下方定义了一个函数hallo,然后在后面调用call_user_func,在参数列表中直接将第一个函数和所需要的参数传入
function hallo($gongzi){return $gongzi;};echo call_user_func('hallo', 1000);
就比如下方定义了一个函数hallo ,在下方有一个数组, 在我们调用call_user_func_array 时,直接将所需要的第二个参数列表,以数组c的形式传入
function hallo($gongzi,$renshu){return $gongzi+$renshu;}$c=[1000,2000];echo call_user_func_array('hallo',$c);
注释:这里创建了一个类,里面有一个方法hallo
在下方new了一个实例对象obj
我们在调用时,将对象名和对象中的方法名放在第一个参数中,以数组的方式,将参数列表放在第二个参数中
class Product{public function hallo($gong,$ren){return $gong+$ren;}}$obj=new Product();echo call_user_func_array([$obj,'hallo'],$c);
类方法调用,直接调用类名,不用调用对象名
class Product{public static function hallo($gong,$ren){return $gong+$ren;}}echo call_user_func_array(['Product','hallo'],$c);
和JS一样,分支也分为单分支双分支和多分支
单分支
$age = 15;if ($age >18){echo '可以看,还可以充钱开会员看';};
双分支
$age = 15;if ($age >18){echo '可以看,还可以充钱开会员看';}else{echo '可以偷偷看';};
双分支三元运算符(语法糖)
$age = 15;echo $age>18?'可以看,还可以开会员看':'可以偷偷看';
多分支
直接写语法糖了,反正原始的写法也用不着
多分支的语法糖是 switch(true){
case 允许条件
满足条件后运行的方法
break;
……(重复上面的语法)
default: 默认执行的方法
};
最后的default 是默认执行,就是在所有条件都不满足时,执行这个方法
switch$age = 13;switch (true) {case $age >= 18 && $age < 30:echo "{$age}岁,彩礼,能按揭吗?<br>";break;case $age >= 30 && $age < 45:echo "{$age}岁,应该成个家了<br>";break;default:echo "{$age}岁,放学,我送你回家<br>";}
循环的本质,也是分支
循环的三个条件:1.初始化循环条件 2.循环条件 3.更新循环条件(不更新就会死循环)
// 循环目标$a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];// count 可以获取当前数组的长度$c=count($a);// 初始化循环条件$i=0;while ($i<$c) {echo $a[$i];$i++;};
循环语法糖
for(初始化循环,循环条件,更新){执行方法};
for($i=0;$i<$c;$i++) {echo $a[$i];};
continue 跳过某次循环,进入下一次循环(使用if来判断,满足条件就跳过)
break 提前结束循环 (也是使用if来判断,满足条件就直接停止循环)
1.索引数组 :健名是数值,从0开始递增的正整数
2.关联数组 :健名是字符串
$user=['name'=>'John', 'email'=>'john@example.com'];printf('<pre>%s</pre>', print_r($user,true));
forEach(数组名 as 健名=>对应的值){对象方法}
$user=['name'=>'John', 'email'=>'john@example.com']foreach($user as $key=>$value) {echo $value."\n";}
可以理解为一个大数组里面包含了多个小数组
$user =[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]];
可以使用foreach+table 的方法以表格的方式将二维数组渲染到页面
PhP中“.=”表示赋值运算符,是字符串连接的意思,该运算符的使用语法如“$string .= string2;”,可以实现字符串拼接效果。
$d='我是';$d .= '小学生';echo $d;
运行结果就是第一个字符串拼接第二个字符串
html和php混编
这里用二维数组模拟从数据库接收的结果
<?phpnamespace _0809;// 用二维数组来模拟数据表查询结果$stus = [['id' => 1, 'name' => '刘备', 'course' => 'js', 'score' => 83],['id' => 2, 'name' => '关羽', 'course' => 'php', 'score' => 75],['id' => 3, 'name' => '张飞', 'course' => 'js', 'score' => 52],['id' => 4, 'name' => '孙权', 'course' => 'php', 'score' => 88],['id' => 5, 'name' => '周瑜', 'course' => 'js', 'score' => 65],['id' => 6, 'name' => '孔明', 'course' => 'php', 'score' => 53],['id' => 7, 'name' => '赵云', 'course' => 'js', 'score' => 63],['id' => 8, 'name' => '马超', 'course' => 'js', 'score' => 77],['id' => 9, 'name' => '姜维', 'course' => 'php', 'score' => 93],['id' => 10, 'name' => '黄忠', 'course' => 'js', 'score' => 41],]?>
html部分
html部分采用php和html混编的方式,可以理解成在html标签中插入PHP代码,将HTML标签中需要输出的内容,直接用PHP代码从数据库中调用出来。
这里面有几个需要注意的地方
1.比如for或者if循环执行方法需要用大括号包裹,如果在混编时,开始大括号都用 : 表示,结束大括号用 endxxx 表示 例如
1.1 foreach - endforeach
1.2 for -> endfor
1.3 if -> endif
1.4 switch -> endswitch
2.在数据调用时候,可以使用<?= xxx?>的短语法替代<?php echo xxx?> 简化语法
3.php代码可以包裹在多个PHP标签中,会自动拼接运行,如果像下方混编的时候,会和HTML标签穿插运行在对应的标签中直接输出PHP调用的数据
<!DOCTYPE html><html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>学生信息管理系统</title><style>table {border-collapse: collapse;width: 360px;text-align: center;}table th,table td {border: 1px solid #000;padding: 5px;}table caption {font-size: 1.3em;}table thead {background-color: lightcyan;}.active {color: red;}</style></head><body><!-- 表格 --><table><!-- 表名 --><caption>学生成绩表</caption><!-- 头部 --><thead><tr><th>学号</th><th>姓名</th><th>课程</th><th>成绩</th></tr></thead><!-- 表格内容 --><tbody><?php// 遍历数据表的内容,并渲染到页面中// { => :// } => endforeach, endfor, ...foreach ($stus as $stu) : ?><tr><?php if ($stu['score'] >= 70) : ?><td><?=$stu['id']?></td><td><?=$stu['name']?></td><td><?=$stu['course']?></td><td><?=$stu['score']?></td><?php endif ?></tr><?php endforeach ?><?php/**** 流程控制的替代语法/模板语法* 1. foreach - endforeach* 2. for -> endfor* 3. if -> endif* 4. switch -> endswitch*/?></tbody></table></body></html>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号