自定义函数:返回值,参数传值(值传递和引用传递),作用域(全局和局部,超全局),静态变量(函数计数器:static 变量 = 值;)。
匿名函数:变量+()
伪类型:告诉用户当前数据的类型
可变函数:通过变量构造函数访问
数据类型判断:is_数据类型
数据类型转换:强制转换和自动转换,settype和gettype
文件包含:html布局和代码重用(复用),include和require,路径(绝对路径和相对路径)
字符串函数,数学函数,时间日期函数
strlen:获取字符串长度,字节长度
字节:指的是计算机的存储单位,一个字节=8位
字符:用户可见的图形符号,字符通过字符集转换成字节
GBK:一个字符 = 2个字节
UTF-8:通常一个字符 = 3个字节,特殊一个字符 = 2个/4个字节
substr:字符串截取,获取字符串(按照字节进行截取)
字符串substr ( 目标字符串 , 字符串的其实位置 [, 截取长度 ] )
所有php中的字符串的首字母所占用的位置是0
strtolower:所有的字符都小写(针对英文字母)
strtoupper:所有的字符都大写
strrev:字符串反转(只能反转英文:英文存储只有一个字节),按照字节进行反转
strpos:从字符串中找对应字符出现的位置(数字下标),从最左边开始找
strrpos:与strpos一样,只是从字符串的右边开始找
通常配合字符串截取(substr)一起使用
strchr:与substr相似,从指定位置截取一直到最后
strrchr(获取文件后缀名):与strchr一样,只是从右边开始查找字符
trim:去掉函数两边的字符,默认是空格,去除两边连续存在的内容,而不能跨内容
字符串trim ( 目标字符串[,要去除的字符串列表 ] )
通常:trim用来剔除空格或者某个指定的字符
PHP中的时间日期函数很强大
time:得到当前时间的时间戳(整型:从格林威治时间1970年1月1日0时0分0秒开始)秒数
date:时间序列化函数,将指定的时间戳转换成规定时间日期的显示格式(随意的字符串:有专业的格式符规定),如果没有指定时间戳,系统默认使用当前时间的时间戳
strtotime:时间日期格式的字符串转换成对应的时间戳(只要是正确的英语时间表达方式,都可以进行转换)
microtime:微秒时间戳,根据不同的要求返回不同的结果
混合microtime (布尔类型 ),可以返回一个浮点数的时间,也可以返回一个数组(时间戳和微秒数)
abs:绝对值
floor:向下取整
ceil:向上取整
round:四舍五入
rand:取得一个指定范围内的随机整数
mt_rand:取得一个指定范围内的随机整数(效率更高)
1. 什么是数组?
数据的集合,多个信息通过一个变量来进行数据的保存。
2. php数组的特点
a) php数组中的数据没有数据类型限制
b) php数组没有数据长度限制(数据长度,数组元素长度)
c) PHP数组元素的下标可以是数字也可以是字符串
方式1:
变量 = array(); //空数组
变量 = array(1,2,3,4,5); //数组内部元素使用逗号进行分隔
方式2:
变量 = [1,2,3,4,5];
方式3:
变量[] = 值;
所有的数组元素的添加都是通过数组变量使用[]的形式来添加(动态添加)
数组变量[] = 值; //给数组变量增加一个元素
方式1:系统自动增加元素的下标:键名
数组变量[] = 值
方式2:手动的增加元素的下标:键名(数值)
方式3:手动增加元素下标:字符串
所有的数组访问方式都是一样的:都是通过数组元素的下标进行访问
语法:变量名['下标’]
PHP数组分类的依据:数组的下标
分为三类:索引数组,关联数组,混合数组
索引数组:所有数组元素的下标全是数字
关联数组:所有数组元素的下标都是字符串
混合数组:数组下标既有数字又有字符串
在php中:数组的下标具有唯一性,php下标如果是字符串区分大小写。
取出数组中的所有元素
满足基本条件:知道数组长度;数组的下标必须是索引,而且要从0开始顺序递增。
foreach循环就是专门用来遍历数组元素的,将当前数组元素的键名和值都取出来,分别赋值给对应的变量。
语法:foreach(数组变量 as [键名变量 =>] 值变量){
//使用键名变量和值变量来输出操作对应的数组元素数据
}
数组在内存中的存在形式。
foreach内存分析
php中只有一维数组,没有理论上的二维数组。
php的二维数组:指的是在数组元素值出现的位置上,刚好又出现了一个数组
$arr = array( 0 =>array(0 =>1),1 => array(0 => 2))
$arr[0] //访问一维数组元素
$arr[0][0]//访问二维数组元素
遍历二维数组
通常二维数组都是进行一层foreach遍历,一维数组是不需要遍历的,直接通过下标访问。
each是一个专门对数组进行数据获取的函数,获取当前数组指针所指向的元素的数据,并将当前指针所指向的数据,通过一个混合数组返回,返回4个元素,将原来的键名和键值各生成一个索引(0和1)和一个关联(key和value)
each操作完数组元素之后一定会将数组指针下移。
echo如果对应操作的数组指针已经移出数组,那么就会返回false
证明foreach是通过指针对数据进行操作
list 是一种能够从别的数组中获取指定的元素的结构,会将获取到的数据挨个的分配到自己指定的变量当中
语法
list(变量1,变量2….) = 数组(元素1,元素2…) =====è 变量1 = 元素1;变量2 = 元素2….
list结构要使用,必须满足以下特点
1. 被获取的数组元素,必须要有索引元素,而且索引必须从0开始,而且索引必须连续顺序递增
2. list结构内的变量不能超过被获取数组中的元素个数(有效元素)
key:获取当前数组当前指针所指向的元素的下标
current:获取的当前指针指向元素的数值
next:获取下一个元素的值,并且将指针下移
prev:获取上一个元素的值,并且将指针上移
end :将指针移到数组的最后一个元素,并返回最终指针位置的值
reset:将指针移到数组的第一个元素,返回最终指针位置的值
array_keys:获取一个数组的所有键名,返回一个索引数组
array_values:获取一个数组的所有值,返回一个索引数组
key,current和next
next或者prev如果将指针移出了数组,key得到的是NULL,而current返回的false
一旦数组指针移出数组,那么使用next和prev都不能将指针移回来,只能通过reset和end
函数循环遍历数组
for循环遍历关联数组
作业:
1. 有多少种方式可以遍历数组?每种方式都遍历一次数组。
数据结构:数据在内存中存在以及处理的方式
栈:先进后出(FILO)
队列:先进先出(FIFO)
以下四个函数:都是对数组本身进行操作
array_shift:从数组的前面弹出元素,得到元素的值
array_unshift:从数组的前面压入元素,得到当前数组元素的个数
array_push:从数组的后面压入元素,得到当前数组元素的个数
array_pop:从数组的后面弹出元素,获得元素的值
栈:出栈和入栈(压栈)
出栈:array_pop
入栈:array_push
入队:array_push
出队:array_shift
联系客服