一、运算符
一、算数运算符
算数运算符用于完成各种运算。
1 | + 加法运算符 $a+$b |
二、赋值运算符
赋值运算符,将一个数据值赋给一个变量。
复合运算符,在赋值之前会完成某个运算。
1 | $a = 5 赋值 |
三、字符串运算
字符串运算用于拼接字符串。
1 | $a = "hello"; |
四、递增(++)和递减(–)运算符
递增和递减运算符将变量的当前值加1或减1,可以使代码更简洁。
1 | ++$i 先加 $i的值加1,然后再返回$i的值; |
五、逻辑运算符
利用逻辑运算符可以根据多个变量的值进行判断,这使得控制程序的流程成为可能,逻辑操作符常用于控制结构中,如if条件和while及for循环。
1 | && and 逻辑与 |
六、比较运算符
比较运算符,返回一个布尔值TRUE或FALSE。
1 | > 大于 |
七、三元运算符
语法:expression1 ? expression2 : expression3
1 | $a = 5; |
八、运算符的优先级
运算符的优先级指的是哪一个运算符应该先计算。
具体运算符的优先级,请点击这里。
二、流程控制
一、判断语句
1. if 语句
1 | if(expression){ |
if语句用括号中的表达式返回值(true或false)来控制是否执行指定的代码程序;表达式为数字0、空、未定义的字符串,内置常量都会返回false。
1 | 短路现象 |
2. switch 语句
语法格式:
1 | switch (expression){ |
switch 语句可以看做是if-else组合的一种变体,如果需要比较有限值的变量,通常会使用switch 语句。
二、循环语句
1. while
语法格式:
1 | while (条件为真){ |
2. do…while
do…while循环是while的一种变体,它在代码块的结束处验证循环条件。
do…while循环首先会执行一次代码块,然后检查条件,如果指定条件为真,则重复循环。
语法格式:
1 | do{ |
3. for循环
当确定脚本的运行次数,可以使用for循环。
语法格式:
1 | for (init counter; test counter; increment counter) { |
4. foreach循环
foreach循环只适用于数组,并用于遍历数组中的每个键/值对。每次循环都将指针后移一位。
语法格式:
1 | 第一种: |
三、跳出循环
1. break
如果包含一个break 语句,将立即结束 while、do.while、for、foreach、switch 的执行。
2. continue
continue 语句使当前循环执行结束,并从下一次循环开始执行。
三、函数
1. 函数概念
函数是用来完成某种特定任务的可重用代码块;
函数可以是程序更具模块化,拥有良好的结构;
函数定义后在程序中可以重复调用;
函数分为内置函数和自定义函数。
2. 函数分类
(1)内置函数
PHP 系统提供了大量功能强大的函数,帮助我们解决各种问题。
(2)创建自定义函数
语法格式:
1 | function functionName() { |
3. 函数简介及区别
函数用function关键字来声明。
函数名称是由字母或下划线开头而非数字。
函数名不区分大小写,不过在调用函数的时候,通常使用其在定义时相同的形式。
PHP 不支持函数重载,所以自定义函数不能和内置函数重名。
参数出现在括号中,如果有多个参数,用逗号分隔。
不同语言函数的区别:
- 在Java等强类型语言中方法的名字严格区分大小写;
- C语言中的函数也是严格区分大小写;
- PHP 到现在的版本,函数名称不区分大小写;
- 很多语言允许函数的重载,即函数有相同的名称但是函数参数不同;
- PHP 不支持函数的重载。
4. 参数传递
值传递(传值)
函数内对参数值的改变不会影响函数外部的值。
引用传递(传址)
当需要在函数体内对参数地修改在函数体外也能反映时,用引用传递。
使用引用传递参数要在参数前加上&符号。
变量本身传入,传入后的变量与原变量建立联系,函数体内变量的变化,会影响到原变量本身。
1 | $a = 25; |
默认参数:可以为参数指定默认值,在没有提供其他值的情况下,则将默认值自动赋给该参数。
可选参数:可以指定某个参数为可选参数,这些参数需要放在参数列表的末尾,需要指定其默认值为空;如果指定了多个可选参数,可以选择性地传递某些参数。
5. 返回值
当需要将函数的执行结果返回给调用者时,这时可以使用return语句返回结果。
return语句执行后,将使得函数立即结束运行,并将控制权返回被调用的行。
1 | function mysquare($num){ |
6. 变量作用域和生命周期
由于引入了函数,程序中变量的能见度发生了变化,即变量的作用范围发生了改变。变量分为:全局变量(global),局部变量(locak),静态变量(static)。
函数之外声明的变量拥有Global作用域,只能在函数以外进行访问。
函数内部声明的变量拥有Local作用域,只能在函数内部进行访问。
全局变量在函数内使用方法:
1 | $user = "xiaoming"; |
局部变量:函数体内定义的变量为局部变量,只在函数体内可见。
局部变量作用域:从声明它的那条语句开始到函数结束。
静态变量:当函数完成/执行后,会删除所有变量。不过,有时需要不删除某个局部变量。要完成这一点,在首次声明变量时使用static关键词。然后每当函数被调用时,这个变量所存储的信息都是函数最后一次被调用时所包含的信息。
静态变量使用方法:
1 | function statics(){ |
7. include和require
include() include()语句将在其被调用的位置处包含一个文件,如
include("init.php");include_once() include_once()的作用与include()相同,不过它会首先验证是否已经包含了该文件,如果已经包含,则不再执行include_once();
require() 其与include()一样,只不过require()通常放在php程序的最前面;
require_once() 其与include_once()一样,但是也要放在php程序的最前面;
include与require的区别:require一个文件存在错误的话,那么程序就会中断执行,并显示致命错误;include一个文件存在错误的话,那么程序不会中断,而是继续执行,并显示一个警告错误。
四、数组
一、数组概念
数组为有序的(键-值)对组成的数据值的集合。根据索引值的不同,数组分为:索引数组和关联数组。
1 | $day = array("a","b","c");//索引数组 |
二、数组创建
1.使用array()函数 $array = array([mixed ...])
与其他语言的数组实现方式不同,php不需要再创建数组时指定其大小。因为php是一种松散类型的语言,所以甚至不需要在使用前先声明。
索引可以是整型数字或则字符串:
- 索引数组:索引为整数,如果没有指定索引值则默认为零,依次递增;
- 关联数组:索引为字符串的数组。
2.直接对数组变量赋值 $arr[key] = value
1 | $fruits[] = "orange"; |
如果方括号中没有指定索引,则取当前最大整数索引值,新的键名将是 该值+1。如果当前还没有整数索引,则键名将为0.如果指定的键名已经有值了,该值将被覆盖。
3.使用函数创建数组 range()创建一个包含指定范围单位单元的数组。
1 | $num = range(1,100); |
三、数组的基本操作
- unset($arr[0]) 删除数组元素
- print_r($arr) 打印数组
- count($arr) 取得数组大小
- in_array(10,$arr) 检查数组中是否包含某个值
四、遍历数组
- for循环变量数组
- foreach循环遍历数组
五、数组排序
- sort()、rsort()对数组进行升序和降序。
- ksort()、krsort()对数组按索引进行升序或降序,并保持索引关系。
六、二维数组
数组元素的值也可以是数组。
1 | $result = array( |
五、字符串
一、输出字符串
echo 是一个语法,不是函数。echo没有返回值,echo可以输出多个值,使用逗号分隔。
二、其他处理函数
strlen() 获取字符串长度
strtolower() 将字符串转换为小写字母
strtoupper() 将字符串转换为大写字母
三、查找与替换
strpos()
strpos(string,find[,start]) strpos()函数在string中以区分大小写的方式找到find第一次出现的位置;如果没有找到则返回FALSE;可选参数start指定开始查找的位置。
stripos()
stripos()与strpos()功能相同,只是查找时不区别大小写。
str_replace()
str_replace(search,replace,subject[,count])
str_replace()函数在subject中以区分大小写的方式搜索search,用replace替换找到的所有内容;如果没有找到search,则subject保持不变。count对替换数进行计数的变量,不可对其设置。
str_ireplace()
str_ireplace()与str_replace()功能相同,只是不区分大小写。
四、截取字符串
substr()
substr(string,start[,length]) 从start位置取出length长度的字符,字符串位置开始值为0;如果没有指定length,那么默认一直到字符串末尾。
strstr()
strstr(string,search,before_search) strstr()作业从string中搜索search,并根据第三个参数返回search后面的数据还是前面的数据(默认为false,返回search后面的;true,返回search前面的)。
stristr()
stristr()与strstr()功能相同,只是不区分大小写。
五、删除字符串
ltrim()
lstrim(string,[charlist]) ltrim函数删除字符串左侧空格及其他预定义字符;如果未设置charlist参数,则删除一下字符:
- “\0” NULL
- “\t” 制表符
- “\n” 换行
- “\x0B” 垂直制表符
- “\r” 回车
- “ “ 空格
rtrim()
rtrim(string[,charlist]) rtrim函数删除字符串右侧空格或其他预定义字符。
trim()
trim函数删除字符串两侧空格或其他预定义字符。
strrev() 反转字符串
nl2br() 将字符串中换行(\n)转换成HTML换行标签(br/)。
strip_tags()
strip_tags(string[,allowable_tags]) 删除字符串中 HTML XML PHP 标签,可选参数allowable_tags指定要保留的标签。
htmlspecialchars() 函数把一些预定义的字符转换为HTML实体
预定义的字符有:
& (和号) 成为 &"" (双引号) 成为 "'' (单引号) 成为 '< (小于) 成为 <> (大于) 成为 >
六、数组字符串转换
explode()
explode(separator,string[,limit]) 返回由字符串组成的数组,separator规定在哪里分隔字符串,string要分割的字符串,可选limit规定所返回的数组元素的数目。
implode()
implode([separator,]array) 将数组元素连接成字符串,separator可选规定数组元素之间放置的内容,默认是””(空字符串);array要组合为字符串的数组。