学前准备
学前准备:html、css
PHP超文本预处理器
PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。
php擅长网站开发 php吸收c java perl
允许网站开发人员快速编写的动态页面(信息的更新)
php可以运行在windows,linux等各种操作系统上!
浏览器>输入url地址>显示网站内容
网络主机(硬件)运行 Web服务器(软件)
apache管理web服务器
php应用服务器执行php代码,交给apache
mysql数据库管理系统 可单独安装一台计算机里
url地址
格式:
理解:
表示要通过HTTP协议定位网络资源
表示合法的internet主机域名或者ip地址
指定一个端口号,可以省略默认为80端口
被请求资源的位置
DNS服务器:
一、PHP基本语法
1、初识PHP脚本程序
1.PHP语言标记 (1)PHP开始标记
(2)PHP结束标记
php解析器叫做PHP应用服务器
(3)我们的页面最终是通过html,css,js来展示出一个炫丽的界面 (4)PHP代码可以嵌入到html代码中任何位置,并且可以嵌入任意多个
(5)文件末尾的结束标志可以省略 2.指令分隔符";" (1)在一些PHP语句的结尾要加上;表示一句话的结束,当然 也不需要可以的去记,因为你一旦漏掉分号,程序根本执行不了,会报错! (2)结束标记就隐含了一个 所以在之前的PHP语句可以省略掉 3.注释 (1)多行注释
(2)单行注释
4.遇到空白的处理 空格,tab制表符,换行 (在英文输入法中)这些写在咱们的PHP代码里面是没有问题的。 可以利用这些空白 来增加我们代码的清晰性和可读性!
2、变量
变量是用于临时(只有在我们的程序的运行过程中才存在)存储值(数据)的容器
1.变量的声明 在我们一些编程语言里面比如C语言 使用变量之前要事先通知,事先声明一下! **注意:*在我们的PHP程序里面 使用变量之前是不需要声明*的!
变量用于存储 数字、文本字符串 或者数组这些数据!
在数学里面是‘等于’的意思,在我们的程序语言里面,它不是等于号,它是 ‘赋值操作符’
2.变量的释放(销毁)
3.变量的命名规则 (1)变量名称严格区分大写 都是不同的变量 (2)字母或者下划线开头,后面接任意数量的字母数字下划线都可以!
例:
错误的命名方式:
*总结一下:*变量名只能包含 字母 数字 下划线 并且必须以字母或者下划线开头!
(3)最好不要用一些关键字作为变量名称(因为在其他的编程语言里面是完全不被允许的)!
关键字:
4.可变变量
5.变量的引用赋值
3、变量类型
概述:变量类型是指保存在该变量中的数据类型。PHP(弱类型语言)对变量类型看的比较淡
使用var_dump(变量名)可以输出变量的类型和变量值!
1.变量类型简介
(1)bool (布尔型)
往变量里面存true或false,那这个变量就是布尔型
(2)int (整型)
往变量里面存整数,那这个变量就是整型
(3)float (浮点型,也称double)
往变量里面存小数,那这个变量就是浮点型
(4)string (字符串)
字符串就是是一系列的字符组成串在一起
1单引号:
单(双)引号里不能直接放单引号!!要放单引号,需要在单引号前加反斜杠转义
如:
单引号里的变量不会被解析。所以在定义一些简单的字符串的时候使用单引号,效率比较高
2双引号
3定界符
(5)array (数组)
(6)object (对象)
(7)resource (资源)
(8)NULL null表示一个变量没有值,表示空 将变量直接赋值为null 声明的变量尚未被赋值 被unset函数销毁的变量
2.变量类型相互转换
强制转换:
4、常量
**1.概念:**常量是用于临时(只有在我们的程序的运行过程中才存在)存储值(数据)的容器 2.定义和使用
常量的命名: (1)和变量一样 只能包含字母数字下划线 并且必须以 字母或者下划线开头 (2)按照惯例常量名字总是大写的 (3)自定义的常量是严格区分大小写的 defined()函数来检查是否定义了某个常量
3.常量和变量的区别
(1)常量前面没有美元符号($) (2)常量只能用define()函数定义,不能通过赋值语句 (3)常量可以不用理会变量范围的规则而在任何地方定义和使用 (4)常量一旦被定义就不能被重新定义或者取消定义 (5)常量的值只能是bool,int,float,string类型
4.预定义常量
预定义常量就是PHP内核已经帮我们定义好的常量
其中有的预定义常量是开头的,这些预定义常量我们又叫它魔术常量
代码所在的位置不同,值也是不同的,所以它叫 八个常用的魔术常量
预定义常量是不区分大小写的
5、运算符
**概述:**一些符号,这些符号可以将变量或者数据执行某中运算! 1.算术运算符 (1)
(2) 第一个意思: 减号
第二个意思: 取反
注意:取反并不会影响到被取反变量本身的值! (3) 乘号
(4) 除号
(5) 取模
(6) 自增 前++ 当在一个语句里面需要使用到被自增的变量的值的时候,前++会先执行自增,然后再返回自增之后的值!
后++ 当在一个语句里面需要使用到被自增的变量的值的时候,后++会先返回变量的值然后再去执行自增
注意:
(7) 自减 前–
后–
注意:自增或者自减是对变量而言的!
2.字符串运算符
3.赋值运算符 注意: 赋值运算符整个语句是有值的,所以整个语句就是一个表达式,所以我们也可以这么写: 相当于也相当于 把右边的值赋给左边的变量 二元运算符
表达式是 PHP 最重要的基石。在 PHP 中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。
4.比较运算符 *概念:*对操作数(按照比较运算符的要求,规则)进行比较。如果比较出的结果满足比较运算符的要求那么结果就是true(真,成立,满足),否则就是false(假,不成立,不满足) PHP中规定: 使用输出布尔类型值的时候 它在页面中会输出1 它会在页面中什么都不输出 所以说我们在测试的过程中如果需要输出布尔类型值的时候我们最好使用来输出更明了的结果! (1) 值是否相等 如果值相等则就是 true(真,成立) 如果值不相等那么就是false(假,不成立)
(2) 全等(值要相等,类型也要相等) 如果两边操作数的值 全等那么就是true否则就是false
3) 值是否不相等 如果两边操作数的值不相等那么就是true,否则就是false
(4) 同上 (5) 不全等 如果两边的操作数不全等那么就是true,否则就是false
(6) 小于 比较两边操作数的值,前面的是否小与后面的
(7) 大于
(8) 小于等于
(9) 大于等于
5.逻辑运算符 概念:对表达式进行逻辑运算,运算出的结果是布尔类型的值(true,false) 要求:参与逻辑运算的表达式的值是布尔类型的值,如果不是布尔类型的值会被PHP自动转换成布尔类型的值,然后再参与运算! (1)逻辑与 and 或者 && 运算规则:左右两边的表达式的值都为true的时候,运算的结果就是true 否则只要其中任意一个为false,运算的结果就是false; 现实举例: true 及格 false 不及格 左右两边的表达式就是我们要考试的科目; 要求:当语文和数学都及格的时候那么,最终的结果才能够通过(true),否则就是不通过(false)
中间隐含一个问题:“短路”,运算符的优先级的问题! 我们的程序语言的设计者认为:
只要有逻辑运算符 (逻辑与,逻辑或)那么运算结果就是就是一个true或者false 那个这个整个运行的过程就不重要了! 当然短路问题并不会遇到太多,就算遇到也不会有什么影响!
(2)逻辑或 or 或者 || 运算规则:左右两边的表达式的值有一个为true,运算的结果就是true,只有当两边的值都是false的时候,结果才会是false
例:
现实举例: 要求:当语文和数学有一门及格那么最终的结果就是通过true 中间隐含一个问题:“短路”,运算符的优先级的问题! 我们的程序语言的设计者认为:
只要有逻辑运算符 (逻辑与,逻辑或)那么运算结果就是就是一个true或者false 那个这个整个运行的过程就不重要了! 当然短路问题并不会遇到太多,就算遇到也不会有什么影响!
(3)逻辑异或 xor 运算规则:左右两边的表达式的值不一样的时候结果就是true,如果一样那么运算的结果就是false
例:
(4)逻辑非 ! 运算规则:将原来表达式的值否定掉,原来是true,那么结果就是false。原来是false,那么结果就是true 6.位运算符 7.其他运算符 (1) 三元运算 格式:
(2)
(3) 屏蔽表达式可能发生错误! (4) (5) (6) 8.运算符的优先级 *优先级的概念:*谁的优先级别高就先算谁 结合方向:规定了从那个方向开始算的问题! 优先级归纳: (1)[无]递增递减 (2)[右]逻辑非! (3)[左]乘,除,取余 (4)[左]加,减,字符串连接符 (5)[无]包含大于号或者小于号的比较运算符 (6)[无]不包含大于号或者小于号的比较运算符 (7)[左]逻辑与&& (8)[左]逻辑或|| (9)[左]? : (10)[右]赋值运算符 (12)[左 ]逻辑异或xor 圆括号的作用: 用圆括号可以将表达式里面的某一块看成一个整体! 使用括号可以增强代码的可读性。
二、流程控制
对PHP程序执行的过程进行控制!
1、顺序执行
自上而下的执行即可! 对这个执行过程没有控制!
2、分支执行
分支执行可以根据条件是否满足来选择执行某些代码,PHP的分支执行主要通过两种语句(if,switch)来实现! 1.if语句 注意:我们if语句的表达式所控制的代码,最好用花括号括起来,哪怕就是一条语句也用花括号括起来! if语句可以嵌套,这是根据实际需求来的! (1)单向条件 if(表达式) 语句1; 表达式的值为true 那么就执行语句1,否则就不执行!
例:
(2)双向条件
例:
(3)多向条件
例:
2.switch语句
3、循环执行
计算机最擅长的功能之一就是按照规定的条件,重复执行某些操作,这是程序设计中最能发挥计算机特长的程序结构。 1.while语句
当表达式的值为true,那么就执行下面的语句块, 当语句块执行结束之后,继续返回上面来判断表达式的值是true还是false,如果还是true,那么就继续执行语句块。直到这个表达式的值为false,那么这个while语句就执行结束了!
例:
2.do…while语句
与while语句区别就是,do while语句至少会执行一次! 3.for语句
表达式a:会放一些初始化话的语句,$i=0,放多个表达式,中间用,隔开 表达式b:会放一些用来判断true或者false的表达式!,也可以放多个表达式,中间用,隔开 表达c:会放一些对初始化的变量进行自增的语句!放多个表达式,中间用,隔开
4、特殊的流程控制语句
1.break语句 作用:用于switch语句,for,while,do…while,foreach,用于中断这些语句! 后面可以接上一个数字来表示跳出几层循环!默认不加就是跳出当前循环语句! 2.continue语句 作用:只能用在循环语句,跳出本次循环,并不是结束整个循环语句! 3.exit()语句 作用:结束当前整个程序的执行!
三、函数
1、自定义函数
函数的调用: 函数的调用需要遵循定义函数的时候写的规则,一一对应,将具体实参传给定义函数时候写的形参 调用函数之后执行的过程是相对独立的,互补干扰,默认没有联系 执行完毕返回调用的位置继续向下执行 :返回给调用者,默认返回null
如:
2、PHP变量的范围
1.局部变量
2.全局变量
3.静态变量
3、参数的传递
1.按值传递参数 传递参数的时候默认使用 对形参的操作,根本不是影响到实参(变量)的值,两者相当于没有联系! 2.按引用传递参数 按引用传递参数,相当于形参和实参指的是同一个人,只是名字不一样,对于形参的操作会直接影响到实参(变量); 3.函数的默认参数 可以给形参设置默认值,设置方法:直接赋值 给形参加默认值的时候是重右往左加的,右边的必须有,才能够给左边的加
例:
4.可变长度参数列表 PHP提供给我们的,可以直接使用
这三个函数可以使用在我们的自定义函数内部,能够返回给我们一些关于参数的信息!
4、可变函数(变量函数)
直接把函数赋值给变量
例:
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数
5、递归函数
递归函数即在函数内部自己调用自己的函数。 递归函数: (1)函数在被调用的执行过程中会在内存里面分配空间用于存储临时数据,那么函数在执行过程中默认之间时没有联系的(除了静态变量,按引用传,全局变量)。里面的变量默认都是局部变量,相互之间没有影响! (2)递归函数,在函数的内部需要有适时结束函数运行的条件!
例:
执行结果:
查看网页源代码:
6、内部(内置)函数
PHP提供许多现成的函数或者结构,可以在实际开发中直接使用。 还有一些函数需要开启特定地 PHP 扩展模块,否则在使用它们的时候就会得到一个致命的“未定义函数”错误。 常用的内置函数或扩展的函数,有这样的需求,才会去找对应的函数。
四、数组
数组:
1、数组类型
复合数据类型
2、数组创建
方法一: 变量名称[索引值]=数据; 变量名称[]=数据;//不写索引值默认是 索引数组,从0开始
例:
[外链图片转存失败(img-xMZjv83W-1563263201070)(12.png)]
方法二: 变量名称=array( 索引值=>数据, … );
例:
关联数组同上
数据里面还可放数组类型的数据,同一个数组中存储任何类型的数据 多维数组: 访问数值的方法 变量名称[索引值][索引值]…
例:
3、数组的遍历
遍历数组:每个都经历一遍 (1)for循环 用的比较少,因为有缺陷
count(数组)返回数组里面数据的个数,还可以获取多维数组的个数
例:
(2)foreach语句来实现遍历数组的目的
例:
例:
规则多维数组的遍历:
不规则多维数组的遍历,可以用递归思想解决
4、预定义超全局数组变量
已经定义过(存在)的变量(存放的数据的类型是数组) 超全局:超级全局变量,作用域(有效区域)
传递数据(提交数据)给服务器端主要两种方式
1.get方式
比如:
http://localhost/php/index.php?参数名=参数值 在服务器端(请求的php文件这边)可以通过来获取到 索引值为参数名,索引值对应的数据就是参数值
缺点:不太安全
2.post方式
比如表单 post发送过来的! 可以通过$_POST来获取到!
5、处理数组的相关函数
(1)array_count_values统计数组中所有值出现的次数
(2)array_key_exists检查给定的键名或索引是否存在于数组中
(3)array_search在数组中搜索给定的值,如果成功则返回相应的键名
(4)count计算数组中的单元数目或对象中的属性个数
(5)in_array检查数组中是否存在某个值
(6)list把数组中的值赋给一些变量
(7)asort对数组进行排序并保持索引关系
直接对数组里面的数据进行排序,第二个参数 SORT_REGULAR - 正常比较单元(不改变类型) SORT_NUMERIC - 单元被作为数字来比较 SORT_STRING - 单元被作为字符串来比较 SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较。 (8)array_filter用回调函数过滤数组中的单元
所有数组函数
五、字符串处理
1、去除空格或其他字符函数
trim
2、大小写转换函数
3、字符串查找函数
1.substr_count统计某字符串出现的次数
2.strpos查找某字符串首次出现的位置
3.strstr查找从某字符出现的位置到结尾的字符串
4、字符串替换函数
str_replace
5、与html标签相关的函数
1.htmlspecialchars把预定义字符转换成html实体
2.strip_tags从字符串中去除HTML和PHP标记
6、字符串截取函数
substr
7、字符串分隔函数
1.explode
2.str_split