学习PHP
参考B站视频:php中文网 PHP8快速入门在线教程
官网文档:https://www.php.net/manual/zh/langref.php
参考博客资料:https://www.ziruchu.com/
导言 1、PHP 是什么
PHP(Hypertext Preprocessor 超文本预处理器) 的简称,是一种被广泛应用的开源通用的服务器端脚本语言,适用于 Web 开发并可嵌入 HTML 中。
通用:指跨平台,如:Windows、Linux、MacOS
开源:意味着你可以轻松获取全部源代码,并进行定制或扩展
免费:意味着你不必为PHP花一分钱,哪怕用在商业项目中
服务器端:意味着你必须将它安装在服务器环境下才可以使用
脚本语言:解释型语言,按编写顺序执行。是指不需要编译,直接由解释器/虚拟机执行的编程语言
2、PHP能做什么
可以快速动态的生成HTML页面
可以返回前端需要的各种类型的数据
可以高效安全的处理表单数据
可以安全的操作服务器上的文件
可以控制与客户端的会话( Cookie/Session ),登录
可以对用户的行为进行授权控制
可以高效安全的操作各种类型的数据库
通过扩展,可以实现加密,压缩等其他功能
可以提供接口数据,包括:小程序、APP、等其他语言
3、PHP 程序执行流程
服务器端必须要有web服务器,Apache或者Nginx!才能接受这些文件!
PHP解释器可以把PHP转为HTML语言!
一、PHP 程序
PHP 文件的默认扩展名是 “.php”
PHP 文件中可以包含 html、CSS、JavaScript 代码
PHP代码组成,由5部分!
序号
组成
描述
1
<?php ... ?>
PHP 标记
2
PHP代码
函数、数组、流程控制、类、方法…
3
;、{}
语句结束符,;一行语句,{}一段语句
4
空白符
合理使用空白符可增强代码可读性
5
注释
// 单行注释, /* 多行注释 */
1、PHP 标记
开始标记 <?php 和 结束标记 ?> 中间写 PHP 代码
当解析一个文件时,PHP 会寻找起始和结束标记,也就是告诉 PHP 开始和停止解析二者之间的代码。此种解析方式使得 PHP 可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被 PHP 解析器忽略。
只有开始没有结束标记,表示所有代码都是由PHP解析器解析成PHP代码来执行!
总之只要把PHP代码,放在开始标记和结束标记内,那么即使是word文档也能放!
2、PHP 代码
序号
指令
描述
1
echo
可以输出一个或多个字符串,用逗号(,)隔开
2
print
只允许输出一个字符串
<?php echo 111 ,222 print 111 ?>
备:上面代码报错,因为没有结束符
<?php 12334 ;454436 ;?> 无任何,输出,要想输出内容到页面中,必须使用输出语句!
在代码块中,想输出文本,必须用这两个指令(函数),不使用指令则无法输出!
3、语句结束符 ; <?php echo 111 ,222 ; print 111 ; ?>
特别注意,结束语句,要使用分号,不然会报错!
4、注释
注释后的文本,不会被解析成HTML,所以在浏览器查看源码也不会有注释内容!
注意:注释要写在代码内!
二、PHP变量 1、声明变量 <?php $a = 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' ; echo $a ; ?>
变量的优势是,多处应用同一值时,只用定义一次值,其它直接使用,在定义处修改,全部值就修改!
函数也是类似,定义一次,多次使用同一代码块!
2、赋值运算符
3、变量命名规则
<?php $new_title = 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' ; echo $new_title ; echo '<hr>' ; $newTitle = 'php中文网《玉女心经》公益PHP WEB培训系列课程汇总' ; echo $newTitle ; echo '<hr>' ; $NewTitle = 'html5中submit是按钮么' ; echo $NewTitle ; ?>
三、html 和 php 混编——用PHP写前端网页文件! 必须在PHP文件下,才能实现HTML和PHP的文件混编!
以下HTML和PHP代码在浏览器中运行等价!
<header id ="masthead" class ="site-header" role ="banner" > <hgroup > <h1 class ="site-title" > <a href ="/" title ="欧阳克个人博客" rel ="home" > 欧阳克个人博客</a > </h1 > <h2 class ="site-description" > 欧阳克是PHP中文网的讲师,愿意把知识分享给大家。</h2 > </hgroup > <nav id ="site-navigation" class ="main-navigation" role ="navigation" > <ul class ="nav-menu" > <li > <a href ="/index.html" > 首页</a > </li > <li > <a href ="/index.html?cate=1" > 服务器</a > </li > <li > <a href ="/index.html?cate=2" > PHP</a > </li > <li > <a href ="/index.html?cate=3" > 前端</a > </li > <li > <a href ="/index.html?cate=4" > Thinkphp</a > </li > <li > <a href ="/index.html?cate=5" > Layui</a > </li > <li > <a href ="/index.html?cate=6" > 小程序</a > </li > </ul > </nav > </header >
这是PHP代码
<header id="masthead" class ="site -header " role ="banner "> <hgroup > <h1 class ="site -title "> <a href ="/" title ="<?php echo '欧阳克个人博客'; ?>" rel ="home "><?php echo '欧阳克个人博客'; ?></a > </h1 > <h2 class ="site -description "><?php echo '欧阳克是PHP 中文网的讲师,愿意把知识分享给大家。'; ?> </h2 > </hgroup > <nav id ="site -navigation " class ="main -navigation " role ="navigation "> <ul class ="nav -menu "> <li > <a href ="/index .html "><?php echo '首页'; ?></a > </li > <li > <a href ="/index .html ?cate =1"><?php echo '服务器'; ?></a > </li > <li > <a href ="/index .html ?cate =2"><?php echo 'PHP '; ?></a > </li > <li > <a href ="/index .html ?cate =3"><?php echo '前端'; ?></a > </li > <li > <a href ="/index .html ?cate =4"><?php echo 'Thinkphp '; ?></a > </li > <li > <a href ="/index .html ?cate =5"><?php echo 'Layui '; ?></a > </li > <li > <a href ="/index .html ?cate =6"><?php echo '小程序'; ?></a > </li > </ul > </nav > </header >
<?php $title = 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' ; $img = 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' ; $content = 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' ; $data = '2021-02-18' ; $class = 'PHP' ; ?> <article> <header class ="entry -header "> <h1 class ="entry -title "> <a href ="/details .html " title ="<?php echo $title ; ?>" rel ="bookmark "><?php echo $title ; ?></a > </h1 > </header > <img style ="width :200px ;height :100px ;" src ="<?php echo $img ; ?>" alt ="" /> <div class ="entry -content "><?php echo $content ; ?></div > <footer class ="entry -meta "> 发布于 <a href ="/index .html ?time =2021-02-18" title ="2021-02-18" rel ="bookmark "> <time class ="entry -date " datetime ="2021-02-18"><?php echo $data ; ?></time > </a >。 属于 <a href ="/index .html ?cate =4" title ="查看 PHP 中的全部文章" rel ="category "><?php echo $class ; ?></a > 分类 </footer > </article > </footer > </article >
变量是一旦声明,就可以在后续使用,在HTML和PHP混编中,把标题等文本内容,当成是PHP变量,放在文档开始阶段定义,然后在编写HTML代码时,引用这些变量就行!
相同的变量名,下面会把上面覆盖,也叫:重新赋值
<?php $title = 'php中文网《玉女心经》公益PHP WEB培训系列课程汇总' ; $img = 'https://img.php.cn/upload/course/000/126/153/5aa23f0ded921649.jpg' ; $content = 'php中文网近期推出的《独孤九贱》系列、《天龙八部》系列、《玉女心经》原创视频课程,好评如潮!由于《玉女心经》系列课程没有做成专题,所以大家找起来有点费劲,为了更好的服务广大php中文网粉丝们,特把课程整理汇总给大家!' ; $data = '2021-02-11' ; $class = 'PHP' ; ?> <article> <header class ="entry -header "> <h1 class ="entry -title "> <a href ="/details .html " title ="<?php echo $title ; ?>" rel ="bookmark "><?php echo $title ; ?></a > </h1 > </header > <img style ="width :200px ;height :100px ;" src ="<?php echo $img ; ?>" alt ="" /> <div class ="entry -content "><?php echo $content ; ?></div > <footer class ="entry -meta "> 发布于 <a href ="/index .html ?time =2021-02-11" title ="2021-02-11" rel ="bookmark "> <time class ="entry -date " datetime ="2021-02-11"><?php echo $data ; ?></time > </a >。 属于 <a href ="/index .html ?cate =4" title ="查看 PHP 中的全部文章" rel ="category "><?php echo $class ; ?></a > 分类 </footer > </article >
注意PHP代码是从上至下,依次解析执行,所以同一变量名,最终值会被最后出现的赋值替代掉,但是如果是赋值然后输出,再赋值,然后再输出,那么前一个输出和后一个输出会不一致,这就是逐条编译的特点!
假如多篇文章,都想要有个标题、日期,作者,但又不能都取同一个变量,那么数组是个好东西!
四、数据结构 一、php 标量数据类型
类型
描述
布尔型 Boolean
true 和 false
整型 Integer
0 - 无限大
浮点型 Float
带小数的数字
字符串 String
汉字、英文、符合、其它国家语言,文本信息
比如一件商品,价格是浮点型,商品个数是整形,名字和介绍是字符串,有没有是布尔型!
echo 输出数据值,开发时使用 var_dump 可以打印数据类型和值,测试时使用
1、布尔型
<?php $x = true ; var_dump ($x ); echo '<hr>' ; $y = false ; var_dump ($y ); ?>
2、整型
整数不能包含逗号或空格
整数是没有小数点的
整数可以是正数或负数
整型可以用三种格式来指定:十进制、十六进制、八进制
<?php $number = 0 ; var_dump ($number ); echo '<hr>' ; $number = 67 ; var_dump ($number ); echo '<hr>' ; $number = -322 ; var_dump ($number ); ?>
3、浮点型
<?php $number = 10.03 ; var_dump ($number ); echo '<hr>' ; $number = -88.23 ; var_dump ($number ); ?>
4、字符串 <?php $str = '我是欧阳' ; var_dump ($str ); echo '<hr>' ; $str = 'My name is ou yang' ; var_dump ($str ); ?>
注意:双引号内的变量,会被解析成值,单引号内的变量,不会解析,直接按文本处理!
一个中文字符占三个!
<?php $str = '我是欧阳' ; var_dump ($str ); echo '<hr>' ; $str = "$str My name is ou yang" ; var_dump ($str ); ?>
二、php 复合数据类型
类型
描述
array
数组
object
对象
callable
可调用
iterable
可迭代
三、php 特殊数据类型
类型
描述
空值 NULL
表示变量没有值
resource
资源
1、NULL
<?php $null ; var_dump ($null ); echo '<hr>' ; $null = '' ; var_dump ($null ); echo '<hr>' ; $null = null ; var_dump ($null ); ?>
二、php 复合数据类型 1数组
类型
描述
数组 Array
数组可以在一个变量中存储多个值
1、创建空数组 $arr = array ();var_dump ( $arr );$arrs = [];var_dump ( $arrs );
2、创建索引数组 访问数组数据,可以把数组看成是有顺序的一组变量,里面的数据是单个变量排列而成!
注意:数组中的数据,是由键和值,一对一对的组成的!也就是说,这种数组,是类似对象,可以以键来访问值!
<?php $arr = array ( '你好' , '世界' , '我是' , '你大爷' ); echo $arr ; echo $arr [0 ]; ?>
3、创建关联数组 注意:默认情况下,数组的数据会自动排序,每个数据都会分配一个索引,可以通过索引访问每一个数据,并且可以自定义这个键,通过键去访问值!
4、输出数组值 <?php $arr = array ( 'hello' => '你好' , '世界' , '我是' , '你大爷' ); echo $arr ['hello' ]; ?>
键要用引号,在访问时,也要给键加上引号!键和值之间用=和>连起来!
注意:没有自定义的数据中,重新按照0开始给数据分配索引!
<?php $arr = array ( '你好哈' => '你好' , '世界' , '我是' , '你大爷' ); echo $arr ['你好哈' ]; echo $arr [3 ]; ?>
5、打印数组 print_r
<?php $arr = array ( '你好哈' => '你好' , '世界' , '我是' , '你大爷' ); print_r ($arr ); ?>
鼠标右击点击查看源代码,更方便查看键(key)和值(value)
<?php $arr = array ( 'hello' => '你好' , '世界' , '我是' , '你大爷' ); var_dump ($arr ); echo '<hr/>' ; $arr2 = [ 'hello' => '你好' , '世界' , '我是' , '你大爷' ]; print_r ($arr2 ); ?>
6、php 连接符 打印时,字符串之间用.连接!
<?php $arr = array ( '你好哈' => '你好' , '世界' , '我是' , '你大爷' ); echo '欢迎你' . ' ' . $arr ['你好哈' ]; ?>
二、php多维数组 1、二维数组 当数组内存放数组类型时,就是多维数组;在数组里面,只要有一个数组类型的数据,那么就是个二维数组!
<?php $arr = array ( array ( '你好哈' => '你好' , '世界' , ), array ( '我是' ), '我是' , '你大爷' ); echo $arr [3 ]; echo '<hr/>' ; print_r ($arr ); ?>
注意:数据类型的数据也是数据!和变量以及变量名要理清!
array()和[]也是数据,当这些数据放在数组中,会自动创建索引!数据间用,隔开!
2、三维数组 <?php $arr = array ( array ( '你好哈' => '你好' , '世界' , [ '我是' , '你大爷' ] ), array ( '我是' ), ); echo $arr [0 ][1 ][1 ]; echo '<hr>' ; print_r ($arr ); ?>
在打印多层数组时,使用print_r();会更清晰!
不建议套太多层!多层数组,多重数组的数据访问可以采用向右消元,来查看单独的数据!
<?php $arr = [ [ 'name' => '欧阳' , 'school' => 'PHP中文网' , 'gongfu' => [ 'PHP' , '小程序' , 'layui' , 'Thinkphp' ] ], [ 'name' => '西门' , 'school' => 'PHP中文网' , 'gongfu' => [ 'PHP' , 'Thinkphp' , 'Laravel' , '实战项目' ] ], [ 'name' => '灭绝' , 'school' => 'PHP中文网' , 'gongfu' => [ 'HTML' , 'PHP' , 'layui' , 'Thinkphp' ] ] ]; echo $arr [0 ]['name' ]; echo '<hr>' ;echo $arr [0 ]['gongfu' ][1 ];echo '<hr>' ;echo $arr [0 ]['gongfu' ][1 ] . '使用' . $arr [2 ]['gongfu' ][1 ];echo '<hr>' ;print_r ($arr ); ?>
备:数组访问时,层次不要弄错
三、php 数组循环,遍历数组! 1、foreach $arr = array ( 'ouyang' => '欧阳' , 'ximen' => '西门' , 'miejue' => '灭绝' ); foreach ( $arr as $v ){ echo $v ; echo '<hr>' ; }
foreach(形参1 as 形参2){循环体}:形参中填入(数组 as 键 => 值)
2、key 和 value形参
$k 和 $v,变量名,可以自定义
<?php $arr = array ( 'ouyang' => '欧阳' , 'ximen' => '西门' , 'miejue' => '灭绝' ); $num = 0 ;foreach ( $arr as $k => $v ){ echo $v ; echo '<hr>' ; echo '这是键:' . $k . '; ' . '这是值:' . $v ; echo '<hr>' ; } ?>
3、循环多维数组 遍历一次循环数组,使用print_r($v);打印数组
示例1 : $arr = [ [ 'name' => '欧阳' , 'school' => 'PHP中文网' ], [ 'name' => '西门' , 'school' => 'PHP中文网' ], [ 'name' => '灭绝' , 'school' => 'PHP中文网' ] ]; foreach ( $arr as $k =>$v ){ print_r ($v ); echo '<hr>' ; }
遍历数组中数组的值,使用echo打印值!
示例3 : $arr = [ [ 'name' => '欧阳' , 'school' => 'PHP中文网' ], [ 'name' => '西门' , 'school' => 'PHP中文网' ], [ 'name' => '灭绝' , 'school' => 'PHP中文网' ] ]; foreach ( $arr as $k =>$v ){ echo $v ['name' ].' --- ' .$v ['school' ]; echo '<hr>' ; }
<?php $arr = [ [ 'name' => '欧阳' , 'school' => 'PHP中文网' ], [ 'name' => '西门' , 'school' => 'PHP中文网' ], [ 'name' => '灭绝' , 'school' => 'PHP中文网' ] ]; foreach ( $arr as $k =>$v ){ foreach ( $v as $va ){ echo $va ; echo '<hr>' ; } echo '<hr>' ; } ?>
项目实战 把HTML改写成PHP
<li > <a href ="/index.html" > <?php echo '首页'; ?> </a > </li > <li > <a href ="/index.html?cate=1" > <?php echo '服务器'; ?> </a > </li > <li > <a href ="/index.html?cate=2" > <?php echo 'PHP'; ?> </a > </li > <li > <a href ="/index.html?cate=3" > <?php echo '前端'; ?> </a > </li > <li > <a href ="/index.html?cate=4" > <?php echo 'Thinkphp'; ?> </a > </li > <li > <a href ="/index.html?cate=5" > <?php echo 'Layui'; ?> </a > </li > <li > <a href ="/index.html?cate=6" > <?php echo '小程序'; ?> </a > </li >
改写:找到重复的地方!比如这个
里面的内容,大多数是重复的,只有中间的内容是不重复的,放入到数组中,使用foreach遍历数组实现!
<?php $arr = [ '首页' , '服务器' , 'PHP' , '前端' , 'Thinkphp' , 'Layui' , '小程序' ]; foreach ($arr as $val ){ echo "<li><a href='/index.html'>$val </a></li>" ; } ?>
以后把这种数据可以放入到数据库中,建立个后台来向数据库添加,然后前端数据从数据库调取,就可以实现不同用户展示不同内容了!
但是作为前端开发人员,要避免不同代码混编,混乱不堪!
把HTML代码和PHP代码完全分割,需要PHP才使用PHP代码!
<?php $arr = [ '首页' , '服务器' , 'PHP' , '前端' , 'Thinkphp' , 'Layui' , '小程序' ]; ?> <?php foreach ($arr as $val ){ ?> <li> <a href='/index.html' ><?php echo $val ?> </a> </li> <?php } ?>
案例文章 <?php $title = 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' ; $img = 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' ; $content = 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' ; $data = '2021-02-18' ; $class = 'PHP' ; ?> <article> <header class ="entry -header "> <h1 class ="entry -title "><a href ="/details .html " title ="构建Nginx 和PHP 镜像" rel ="bookmark "><?php echo $title ?></a ></h1 > </header > <div class ="entry -content "><?php echo $content ?></div > <img src ="<?php echo $img ?>" alt =""> <footer class ="entry -meta "> 发布于 <a href ="/index .html ?time =2020-10-02" title ="2020-10-02" rel ="bookmark "> <time class ="entry -date " datetime ="2020-10-02"><?php echo $data ?></time > </a >。 属于 <a href ="/index .html ?cate =4" title ="查看 Linux 中的全部文章" rel ="category "><?php echo $class ?></a > 分类 </footer > </article >;
这是一篇文章的写法,把其中共同属性提取出来!制作成变量!还可以把所有文章的这些信息存放在数组中,把文章的重复部分也拿出来,把可以替换的数据,使用数组保存!使用二维数组,一个数组保存一个文章中的标题日期等信息,不同数组,保存不同文章的这些信息
<?php $lists = [ [ 'title' => 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' , 'img' => 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' , 'content' => 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' , 'data' => '2021-02-18' , 'class' => 'PHP' ], [ 'title' => 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' , 'img' => 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' , 'content' => 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' , 'data' => '2021-02-18' , 'class' => 'PHP' ], [ 'title' => 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' , 'img' => 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' , 'content' => 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' , 'data' => '2021-02-18' , 'class' => 'PHP' ], [ 'title' => 'php中文网原创视频:《天龙八部》公益php培训系列课程汇总!' , 'img' => 'https://img.php.cn/upload/course/000/000/001/5d242759adb88970.jpg' , 'content' => 'PHP中文网因专业的讲师水平和高效的视频质量,推出的各种视频课程系列一直以来都深受大家喜爱。特别是《天龙八部》系列、《独孤九贱》系列、《玉女心经》系列的原创课程在行业内更是具有强大的影响力,好评不断!为了让大家能更快速方便的寻找到相关教程资源,我们在这篇文章中特意将《天龙八部》系列课程整理出来供大家有针对性得学习!' , 'data' => '2021-02-18' , 'class' => 'PHP' ], ] ?> <?php foreach ($lists as $lists_v ){ ?> <article> <header class ="entry -header "> <h1 class ="entry -title "><a href ="/details .html " title ="构建Nginx 和PHP 镜像" rel ="bookmark "><?php echo $lists_v ['title '] ?></a ></h1 > </header > <div class ="entry -content "><?php echo $lists_v ['content '] ?></div > <img src ="<?php echo $lists_v ['img '] ?>" alt =""> <footer class ="entry -meta "> 发布于 <a href ="/index .html ?time =2020-10-02" title ="2020-10-02" rel ="bookmark "> <time class ="entry -date " datetime ="2020-10-02"><?php echo $lists_v ['data '] ?></time > </a >。 属于 <a href ="/index .html ?cate =4" title ="查看 Linux 中的全部文章" rel ="category "><?php echo $lists_v ['class '] ?></a > 分类 </footer > </article > <?php } ?>
注意:先定义数组<?php 定义数组 ?>,再使用数组中的数据<?php for(){ ?>待循环数据<?php } ?>
最后在待循环数组中,把提取的数据替换进去<?php echo 数组中的key ?>!注意数组中数据的写法,是通过打印数组的键,使用echo!由于内部数组键值相同!
当某一篇文章不需要图片或者其它内容,怎么办?直接删除其数组中的数据,解析后会报错!^1
函数 一、php 条件判断 1、三元运算符 ? : $name = '欧阳' ;echo $name ? '我是欧阳克' : '我也不知道我是谁' ;
?前面是判断条件,:左右是两个选项,这里把变量$name当作判断条件,意味着变量存在非空、非未定义,非假值等情况下,执行前面的,这里的实际意义是,判断变量是否被赋值!
2、if $ouyang = '欧阳' ;if ($ouyang ){ echo $ouyang ; }
3、if else $ouyang = '欧阳' ;if ($ouyang ){ echo $ouyang ; }else { echo '灭绝师太' ; }
if是匹配的条件语句,else是匹配不上条件时,执行的代码!条件语句可以是变量,可以是运算结果!
4、if elseif else $ouyang = '欧阳' ;$miejue = '灭绝师太' ;if ($ouyang ){ echo $ouyang ; }else if ($miejue ){ echo $miejue ; }else { echo '西门大官人' ; }
5、switch case default $str = 'ximen' ;switch ($str ) { case 'ouyang' : echo '我是欧阳' ; case 'miejue' : echo '我是灭绝师太' ; case 'ximen' : echo '我是西门大官人' ; default : echo '我不知道我是谁' ; }
switch是待匹配选项,case是匹配的值,与匹配选项的关系是 是否相等 然后接上执行代码,是if的特殊版本,底层逻辑还是if语句!default是所有条件都不满足时,执行的代码,与else含意相同!
6、break
结束当前代码,所属区域的代码块结束!放在条件或者循环中,放在条件中,可以防止穿透!
$str = 'ximen' ;switch ($str ) { case 'ouyang' : echo '我是欧阳' ; break ; case 'miejue' : echo '我是灭绝师太' ; break ; case 'ximen' : echo '我是西门大官人' ; break ; default : echo '我不知道我是谁' ; break ; }
7、PHP8 新特性 match $str = 'ximen' ;echo match ($str ) { 'ouyang' => '我是欧阳' , 'miejue' => '我是灭绝师太' , 'ximen' => '我是西门大官人' };
与switch语法类似match中填写待匹配选项,内部匹配和执行代码的表现形式是键、值!
键的地方,书写匹配值,值的地方,书写返回给match()的值!只能返回一个值!严格匹配!
match可以返回值,可以赋值给其它变量
匹配多条件、默认值
$str = 'ouyang' ;echo match ($str ) { 'miejue' ,'miejueshitai' => "我是灭绝师太" , 'ximen' ,'ximendaguanren' => "我是西门大官人" , default => '我是欧阳' , };
备:没有默认值,会报错的
8、switch 和 match 对比 match与swith的区别:
match 表达式基于值的一致性进行分支计算。 match表达式和 switch 语句类似, 都有一个表达式主体,可以和多个可选项进行比较。 与 switch 不同点是,它会像三元表达式一样求值。 与 switch 另一个不同点,它的比较是严格比较===而不是松散比较==
macth注意点:
match使用 ===进行严格比较;
match表达式必须以;结尾;
match表达式与switch的区别:
match 比较分支值,使用了严格比较 (===), 而 switch 语句使用了松散比较。
match 表达式会返回一个值。
match 的分支不会像 switch 语句一样, 落空时执行下个 case。
match 表达式必须彻底列举所有情况。
二、函数介绍 1、什么是函数
函数是一段可以重复执行的代码片断
函数是实现代码复用的重要手段
函数是现代编程语言最重要的基本单元
函数永远是编程的核心工作
2、函数的分类
根据函数的提供者(编写者),分为二类
系统函数: 编程语言开发者事先写好提供给开发者直接使用的
自定义函数: 用户根据自身需求,对系统功能进行扩展
三、系统函数
官网手册:https://www.php.net/manual/zh/funcref.php
PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。
函数集合名
描述
String
字符串处理函数
Array
数组函数允许您访问和操作数组
MySQLi
允许您访问 MySQL 数据库服务器
Date
服务器上获取日期和时间
Filesystem
允许您访问和操作文件系统
Mail
数学函数能处理 integer 和 float 范围内的值
HTTP
允许您在其他输出被发送之前,对由 Web 服务器发送到浏览器的信息进行操作
Calendar
日历扩展包含了简化不同日历格式间转换的函数
Directory
允许您获得关于目录及其内容的信息
Error
允许您对错误进行处理和记录
Filter
进行验证和过滤
FTP
通过文件传输协议 (FTP) 提供对文件服务器的客户端访问
MySQL
允许您访问 MySQL 数据库服务器
SimpleXML
允许您把 XML 转换为对象
XML
允许我们解析 XML 文档,但无法对其进行验证
Zip
压缩文件函数允许我们读取压缩文件
1、String 字符串函数
函数
描述
strtolower()
将字符串转化为小写
strtoupper()
将字符串转化为大写
strlen()
获取字符串长度
trim()
去除字符串首尾处的空白字符(或者其他字符)
ltrim()
去除字符串开头的空白字符(或者其他字符)
rtrim()
去除字符串结尾的空白字符(或者其他字符)
str_replace()
字符串替换
strpbrk()
字符串中查找一组字符是否存在
explode()
将字符串分割为数组
md5()
将字符串进行md5加密
$ouyang = 'OUYANGKE' ;echo strtolower ($ouyang );echo '<hr>' ;$miejue = 'miejueshitai' ;echo strtoupper ($miejue );echo '<hr>' ;$php = '欧阳克,灭绝师太,西门大官人,天蓬' ;print_r ( explode (',' ,$php ) );echo '<hr>' ;$ximen = '西门大官人' ;echo md5 ($ximen );
2、Array 数组函数
函数
描述
count()
数组中元素的数量
implode()
把数组元素组合为字符串
array_merge()
两个数组合并为一个数组
in_array()
数组中是否存在指定的值
sort()
对数值数组进行升序排序
rsort()
对数值数组进行降序排序
array_unique()
移除数组中的重复的值
array_push()
将一个或多个元素插入数组的末尾
array_pop()
删除数组中的最后一个元素
$arr = [ '欧阳克' , '灭绝师太' , '西门大官人' , '天蓬' ]; echo count ($arr );echo '<hr>' ;echo implode (',' ,$arr );echo '<hr>' ;echo in_array ('天蓬' ,$arr );echo '<hr>' ;array_pop ($arr );print_r ($arr );
3、函数–在判断条件中使用的函数 https://www.php.net/manual/zh/function.isset.php
if ($miejue ){ echo '灭绝师太' ; } if (isset ($miejue )){ echo '灭绝师太' ; } if (empty ($miejue )){ echo '灭绝师太' ; }
注意:^2
四、自定义函数 1、函数的基本语法 function fun_name (参数列表 ) { }
必须使用关键字:function 声明
函数名称不区分大小写 ,多个单词推荐使用下划线连接
2、调用函数 先创建,再调用!创建一次,可以无数次调用,这样就可以复用代码块了!
function fun_name ( ) { return '我是:欧阳克' ; } echo fun_name ();
3、函数参数 function fun_name ($name ) { return '我是:' . $name ; } echo fun_name ('欧阳克' );
方法参数可以有默认值,有默认值可以不传值
方法必须以返回的方式,不要用 echo 输出的方式
function fun_name ($name ,$school ='PHP中文网' ) { return '我是:' . $name . ',我来至:' . $school ; } echo fun_name ('欧阳克' ,'过去的世界' );
4、作用域
php中, 只有函数作用域和全局作用域
所有函数作用域中的变量,外部不可见
全局作用域声明变量,在函数中是可见的
$name = '灭绝师太' ;$school = 'PHP中文网' ;function fun_name ( ) { global $name ; global $school ; return '我是:' . $name . ',我来至:' . $school ; } echo fun_name ();
5、PHP8 新特性:命名参数
PHP7
可以赋予初始值,但形参和实参位置是一一对应的!
function jisuan ($a ,$b =0 ,$c =0 ,$d =0 ) { echo $a ; echo '<hr/>' ; echo $b ; echo '<hr/>' ; echo $c ; echo '<hr/>' ; echo $d ; echo '<hr/>' ; } jisuan (10 ,20 ,30 ,40 );
PHP8
不仅可以赋予初始值,调用函数时,实参中可以指定形参名字,再赋值!
function jisuan ($a ,$b =0 ,$c =0 ,$d =0 ) { echo $a ; echo '<hr/>' ; echo $b ; echo '<hr/>' ; echo $c ; echo '<hr/>' ; echo $d ; echo '<hr/>' ; } jisuan (10 ,20 ,d :30 ,c :40 );
数据类型——运算 一、php 运算符
运算符
描述
+
相加
-
相减
*
相乘
/
相除
%
取余
++
加加
--
减减
.
连接、用在字符串
注意:++和--适用于变量,当参与其它运行时,放在变量前后与运算顺序有关!
二、php 赋值运算符
运算符
描述
=
赋值运算符
+=
先加,后赋值
-=
先减,后赋值
*=
先乘,后赋值
/=
先除,后赋值
%=
先取余,后赋值
.=
先连接,后赋值
注意:这些相当于是++和--的升级版,可以自定义变量自身参与的算术运算!
三、php 比较运算符
运算符
描述
>
大于
>=
大于等于
<
小于
<=
小于等于
==
等于
!=
不等于
===
恒等于
!==
恒不等
注意:==是仅比较值,不比较数据类型!===是严格,比较值也比较数据类型,完全一致才相等!
PHP8 新特性:字符串与数字的比较var_dump ( '欧阳' > 100 );echo '<hr>' ;var_dump ( '欧阳' < 100 );echo '<hr>' ;var_dump ('欧阳' == 0 );
数字字符串(numeric string)时,会按数字进行比较。
不是数字字符串时,将数字转化为字符串,按字符串比较。
0 == 'foobar' 0 == 'foobar'
四、php 逻辑运算符
运算符
描述
and 和 &&
与
or 和 `
xor
异或
!
非
注意:xor在布尔值的运算中,当两个布尔值相同为假,不同为真!
案例: 1、图片判断 <?php if (isset ($article_v ['img' ])){ ?> <img style="width:200px;height:100px;" src="<?php echo $article_v ['img'] ?>" alt="" /> <?php } ?>
**isset() **:检测变量是否已声明并且其值不为 null
<?php echo $lists_v ['title' ]; ?> <?php if (isset ($lists_v ['title' ])){ echo $lists_v ['title' ]; } ?>
也可以改为下方的判断, 不赋值给变量
<?php if (!empty ($lists_v ['content' ])){ echo $lists_v ['content' ]; } ?>
函数结构——循环 1、while $int = 1 ;while ( $int < 10 ) { echo $int ; echo '<hr/>' ; $int ++; }
2、do while $int = 1 ;do { echo $int ; echo '<hr>' ; $int ++; }while ( $int < 1 );
注意:按顺序执行,最后while();加上;结束语句!
3、for 示例1: for( $int=1; $int<10; $int++){ echo $int; echo '<hr>'; } 示例2: for( $int=1; $int<10; $int++){ if($int == 5){ echo '等于5,单独输出'; }else{ echo $int; } echo '<hr>'; }
结束循环 4、continue
结束当前循环,进入下次循环
在循环语句中使用 while for
for ( $int =1 ; $int <10 ; $int ++){ if ($int == 5 ){ continue ; } var_dump ($int ); echo '<hr>' ; }
5、break
结束循环
在循环语句中使用 while for switch
可以跳出多层循环
示例1 : for ( $int =1 ; $int <10 ; $int ++){ if ($int == 5 ){ break ; } var_dump ($int ); echo '<hr>' ; }
注意:可以跳出多层循环,直到没有循环!
PHP8新特性:JIT 一、PHP 运行速度测试 1、新建php文件 <?php $start = microtime (true ) ; $total = 0 ; for ($i =0 ; $i < 1000000 ; $i ++) { $total += $i ; } echo "Count: " .$i .",Total: " . $total . "\n" ; $end = microtime (true ); $spend = floor (($end - $start ) * 1000 ); echo "Time use: " . $spend . " ms\n" ; ?>
二、JIT (即时编译)编译器
JIT (Just-In-Time)即时编译器是 PHP 8.0 中最重要的新功能之一,可以极大地提高性能。
JIT 编译器将作为扩展集成到 php 中 Opcache 扩展 用于运行时将某些操作码直接转换为从 cpu 指令。 仅在启用 opcache 的情况下,JIT 才有效
1、Opcache 扩展
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是:省去了每次加载和解析 PHP 脚本的开销。
2、Opcache 开启
文件位置:softs\php\php-8.0.2-nts\php.ini
3、Opcache 配置 ; Determines if Zend OPCache is enabled opcache.enable=1 ; Determines if Zend OPCache is enabled for the CLI version of PHP opcache.enable_cli=0 ; The OPcache shared memory storage size. opcache.memory_consumption=128 ; The amount of memory for interned strings in Mbytes. opcache.interned_strings_buffer=8 ; The maximum number of keys (scripts) in the OPcache hash table. ; Only numbers between 200 and 1000000 are allowed. opcache.max_accelerated_files=10000
4、JIT 配置(新增) opcache.jit=tracing opcache.jit_buffer_size=100 M
5、JIT 速度测试
6、php 扩展目录