本章是需要熟记的函数,使用的时候有问题查手册
操作数组的函数
is_array()
判断一个变量是否是一个数组,返回是一个布尔型,如果是数组返回真,如果不是数组,返回假
array_search()
查找一个值是否正在一个数组中,返回的是以键名
语法:$arr = array_search('3',$arr);
array_search()查找值区分大小写,不区分数据类型,如果出现同值问题,取前面第一个下标。
第三个参数如果是true则区分数据类型$arr = array_search('3',$arr,true);
操作键值的函数
array_keys()
获取数组中的所有下标,以一个索引数组的模式返回
语法:$arr2 = array_keys($arr);
获取的数组,下标从0开始依次递增
array_values()
获取数组中的所有值,以一个索引数组的模式返回
语法:$arr3 = array_values($arr);
如果值是一个数组,也同样将这个数组当成以值赋值给数组
array_combine()
将两个数组的值合并成一个数组,第一个数组是下标,第二个数组是值
语法:$arr4 = array_combine($arr1,$arr2);
返回的数据类型是一个数组。两个数组参数的元素个数必须要一一对应
in_array()
查找数组中的某一个值是否存在
语法:var_dump(in_array('a',$arr));
in_array查找是区分大小写的,并且默认不区分数据类型,如果想让他区分数据类型,将第三个参数修改为true即可;
第一个参数是需要查找的值,第二个参数是查找的数组,返回的结果是一个布尔值
而array_search返回的是一个键名
array_key_exists()
查找一个键是否在某个数组中
语法:var_dump(array_key_exists('1',$arr));
第一个参数是需要查找的下标,第二个参数是需要寻找的数组,返回的结果是一个boolean型
本身就不区分数据类型,没有第三个参数;
isset()
判断一个变量是否已经被定义,如果没有被定义或者值为null返回的结果是false
语法:var_dump(isset($arr['b']));
isset()和array_key_exists的区别,如果下标对应的值为空。isset返回的结果是false,array_key_exists返回的结果是true
合并和拆分字符、数组的函数
implode()
将一个数组里面的元素合并成一个字符串
语法:$str = implode('',$arr);
两个参数,第一个是元素值和值之间连接的符号(第一个可以不写),第二个参数是你需要遍历的数组。join()就是implode别名函数
explode()
将一个字符串拆分成一个数组
语法:$arr = explode('a',$str);
两个参数,第一个是拆分字符串的标志,第二个参数是需要拆分的字符串
语法:$arr = explode('a',$str,3);
如果第三个元素是正整数,分割成三个部分,最后一个元素会将包含剩下的所有的包含
如果第三个原始是负整数,则会将最后的3个元素抛弃,
数组的交并差
array_merge()
合并两个数组:array_merge(数组1,数组2)
语法:$arr = array_merge(range(0,9),range('a','z'));
array_merge如果合并两个数字下标的数组,会将数字重新从0进行组合。
array_merge如果合并两个字符串下标的数组,后面的值会将前面的值覆盖。
array_merge合并两个数组,先从第一个数组开始合并,然后在合并第二个数组。
array_diff()
计算数组差值
语法:array array_diff ( array $array1 , array $array2 [, array $... ] )
对比返回在 array1 中但是不在 array2 及任何其它参数数组中的值。
返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变
array_intersect()
计算数组的交集
语法:array array_intersect ( array $array1 , array $array2 [, array $ ... ] )
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。
函数遍历数组
回调函数是由计算机自己去调用php中的函数
array_map()
将回调函数作用到给定数组的单元上
语法:array array_map ( callable $callback , array $arr1 [, array $... ] )
语法: array_map(‘函数名’,数组名)。
1 | //使用系统函数,调用数组 |
1 | //使用自身定义的函数,调用数组 |
1 | //使用匿名函数,调用数组 |
结果将所有数字转换为正数;
array_map()
返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。- array_map去回调我们自己定义好的函数
- 除了第一个参数直接写函数名的方法以外,我们也可以直接写一个匿名函数,达到回调函数的功能
- 如果第一个参数的值为null,则会把后面的数组的每一个值取出来进行拼接,合并成一个新的数组
array_walk()
功能类似于遍历数组,可以同时获取数组里面的值和下标
1 | $arr = array('name'=>'张无忌','age'=>528,'sex'='男'); |
可以分别获取下标和值,进行计算。如果函数只写一个参数,则获取的是数组里面的值。
1 | $arr2 = array_walk($arr,function($value,$key){ |
array_walk同样支持匿名函数的用法
接触最多的回调函数还是
array_map(),array_walk()
用的次数相对于而言,比较少。array_walk第一个参数写的数组名,第二个参数写的才是调用的数组
array_walk返回的结果只会是一个布尔型的结果,如果array_walk执行成功返回的记过就是true,如果array_walk执行失败,返回的救过就是false,他不会生成一个新的数组;
栈和队列
栈的特点就是先进后出,后进先出。
队列的特点就是先进先出,后进后出。
array_push()
第一个参数是需要放置的数组,后面的参数是需要放置的元素
1 | $arr = array(); |
一次性可以放置多个元素
array_pop()
1 | $arr = array(); |
出栈一次只能出一个元素。d和c后进的元素,先被拿出来了
返回结果:mexd,溢出的元素
array_shift()
出队列
思考:unset和arr_shift有什么区别?
答案:使用array_shift去移除一个元素,那个其他的元素位置会往前移一位,保持数据完整性;但是unset删除一个元素,下标也会被删除
array_unshift()
就是在数组的第一个位置插入一个元素。
往数组里面第一个元素的位置放置一个元素。
栈和队列的优点:栈和队列都是有效保证数据的完整性;
数组的排序
sort()
按照数值值得大小进行排序。从小到大的顺序
将原有的下标丢弃,从0开始依次递增
rsort()
按照数组的数值进行排序,从大到小的顺序。
也是将原有的下标丢弃,从0开始依次递增
asort()
按照数组的数值进行排序,从小到大排序,但是会保留下标
arsort()
按照数组的数值进行排序,从大到小排序,但是会保留下标
ksort()
按照数组的下标顺序进行排序。从小到大进行排序
krsort()
按照数组的下标顺序进行排序,从大到小进行排序
natsort()
自然排序
将字符串整体进行排序,而sort会挨个字符进行比较,然后进行排序
usort()
自定义排序
1 | $arr = array( |
在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于0的整数。
如果return -1则值放在前面
如果 return 1 则值放在后面
如果 return 0 则值的位置不发生变化
关于字符串的函数
[]
字符串可以理解成字符的合计。
所以,[]就是获取字符串中的某一个字符
strlen()
获取字符串的长度
获取长度的单位是字节,中文下的感叹号也被分解为三个字节;空格也在空间
trim()
去除两边的空格
rtrim()
除去右边的空格
ltrim()
去除左边的空格
strpos()
获取字符串某个字符的位置
语法:strpos($str,'b');
获取某个字符首次出现的位置。如果后面加上第三个参数,代表字符串从某个位置开始往后去寻找。如果没写第三个参数,则第三个参数默认为0
语法:strpos($str,'b',3);
参数为3,则是从字符串第4个位置开始去寻找
strrpos()
获取某个字符出现的最后一个位置
语法:var_dump(strrpo($str,'b',2));
从右往左查找,第三个参数代表最终查找到某个字符结束。找到返回下标,找不到返回false;
str_repeat()
将某个字符串重复多少次
第一个参数是需要重复的字符串,第二个参数重复的次数;
chr()
将一个数字转换成ASCII码
ord()
将一个ASCII转换成对应的数字
substr()
截取某个字符串
语法:substr($str,3);
从下标为3的字符开始,一直截取到结束
语法:substr($str,3,4);
从下标为3的字符开始,截取4个字符
语法:substr($str,3,-3);
从下标为3的字符开始截取,舍去最后三个字符
语法:substr($str,-4,2);
从右往左数4个字符开始截取,截取2个
语法:substr($str,-5,-2);
从右往左数第五个字符开始截取,截取到倒数第二位终止
strchr()
从某个字符开始截取
语法:strchr($str,'c');
从左往右第一个c开始截取到最后(区分大小写)
strstr()的功能和strchr()的功能一模一样,只不过名称不同
stristr()
也是从某个字符开始截取,但是不区分大小写
strrchr()
从某个字符最后出现的位置开始往后截取
可以非常方便的获取文件的后缀名
str_replace()
语法:str_replace(替换前的字符串,替换后的字符串,需要替换的字符串)
str_split()
分割字符串,生成一个数组
第一个参数是一个字符串,第二个参数代表以几个字节进行拆分
explode是以字符进行拆分的
str_pad()
填充字符串
四个参数组成,第一个是填充的字符串,第二个是长度,第三个是填充物,第四个是左,右,两边填充
strtolower()
将一个字符串转换成全小写
strtoupper()
将一个字符串转换成全大写
nl2br()
将\n转换成
htmlspecialchars():
将标签当成普通文本输出
urlencode()
可以将字符串进行加密
urldecode()
可以将加密好的字符串进行解码
多字符处理函数
多字符处理函数,不是php默认的开启模式,需要通过配置php.ini进行操作
extension=php_mbstring.dll
mb_strlen()
获取字符的长度
第一个参数是我们需要获取的字符串,第二个参数是选择的编码格式
mb_internal_encoding()
- 获取当前的编码格式(不加参数)
- 修改当前的编码模式(增加参数)
mb_strpos()
查找当前某个字符的位置
mb_substr()
截取字符
iconv()
转换格式
里面三个参数,第一个是当前的编码,第二个是转换后的编码,第三个是需要转换的字符串