数组
数组类型
- 数字索引数组
- 最常见的数组类型,默认从0开始
- 声明方式
- 使用array()函数声明数组
- array 数组名称([mixed])
- mixed参数的语法为key=>value.如果有多个mixed,可以用逗号分隔开。也可以只给出数组的元素值,而不必给出键值
- 例如:
$arrs=array(array('01行01列', '01行02列' ), array('02行01列', '02行02列' ), .... ); //数组$arrs就是一个二维数组
- 通过直接为数组元素赋值的方式声明数组
-
- 如果在创建数组时不知道数组的大小,或者数组的大小会根据实际情况变化,可以使用直接赋值的方式声明数组
- 例如:
$arr[1]="元素1"; $arr[2]="元素2"; $arr[3]="元素3"; $arr[4]="元素4"; $arr[5]="元素5";
-
- 使用array()函数声明数组
- 关联索引数组
- 关联索引数组的键名可以是数值和字符串混合的形式,而不像数字索引数字的键名只能是数字。关联索引数组直接通过array()函数声明即可,只需要保证不少一个元素的键名不是纯数值即可
数组的结构
- 一维数组
- 多维数组
- 数组是可以嵌套的,每个数组元素也可以是一个数组,这种数组即为多维数组
遍历数组
- 遍历一维数字索引数组
- 可以采用for或者foreach循环
- 遍历一维关联索引数组
- 采用foreach循环,可以只遍历元素值,也可以键值和元素值一起遍历,距离如下
-
foreach ($arr as $key => $value){ echo $key."的值为:".$value."。<br/>"; } reset($arr);//上面的遍历执行完后,内存中的实时元素为数组最后一个元素的开头 //因此使用reset()函数重新定义为数组的开头元素
- 遍历多维数组
- 使用for循环配合each()、list()函数来遍历数组元素
- 例如:
$arrs = array( array( '01行01列', '01行02列' ), array( '02行01列', '02行02列' ), ); //数组$arrs就是一个二维数组 reset($arrs); for ($row = 0; $row < 2; $row++) { while (list($key,$value) = each($arrs[$row])) { echo $key.":".$value." | "; } echo '<br/>'; } 输出结果: 0:01行01列 | 1:01行02列 | 0:02行01列 | 1:02行02列 |
数组排序
- 与数组排序相关的函数
- sort():默认升序排序
- asort():根据数组元素的值升序排序
- ksort():根据数组元素的键值降序排序
- rsort():默认降序排序
- arsort():根据数组元素的值降序排序
- krsort():根据数组元素的键值降序排序
- usort(函数名,自定义排序规则):根据自定义排序规则进行排序
- 一维数组排序根据需求直接采用以上函数即可
- 多维数组排序复杂一点,需要设定一个排序规则,然后建立一个排序函数,再通过usort()函数对特定数组采用特定排序方法进行排序
字符串与数组的转换
- 使用explode和implode函数来实现字符串和数组之间的转换。explode用于把字符串按照一定的规则拆分为数组中的元素,并且形成数组。implode函数用于把数组中的元素按照一定的连接方式转换为字符串
向数组中添加和删除元素
- 使用push、pop、shift和unshift函数来实现
- 向数组中添加元素
- array_unshift(目标数组,[添加元素1,添加元素2,…]):向头部添加数组元素
- array_push(目标数组,[添加元素1,添加元素2,…]):向尾部添加数组元素
- 从数组中删除元素
- array_shift(目标数组):删除头部一个数组元素
- array_pop(目标数组):删除尾部一个数组元素
查询数组中的指定元素
- 使用in_array()、array_key_exists()、array_search()、array_keys()和array_values()函数实现
- in_array(查询的元素,数组名):判断需要查询的元素是否在数组中,如果在则返回true
- array_key_exists(查询的元素键值,数组名):判断需要查询的元素键值是否在数组中,如果在则返回true,主要用于关联索引数组
- array_search(查询的元素值,数组名):判断需要查询的元素值是否在数组中,如果在则返回true,主要用于关联索引数组
- array_keys(数组名):用于取得数组的键值,并把键值作为数组元素输出一个数字索引数组,主要用于关联索引数组
- array_values(数组名):用于取得数组的元素值,并把元素值作为数组元素输出一个数字索引数组,主要用于关联索引数组
统计数组元素的个数
- 使用count()函数来统计数组元素的个数
- 使用array_count_values()函数来统计数组内的元素值,并且返回一个以函数值为键值、以函数值个数为元素值的数组
删除数组中重复的元素
- 使用array_unique()函数可以实现数组中元素的唯一性,也就是去掉数组中重复的元素。不管是数字索引数组还是关联索引数组,都是以元素值为准。返回值为具有唯一性元素值的数组
调换数组中的键值和元素值
- 使用array_flip()函数调换数组中的键值和元素值。如果被调换的数组拥有重复元素值,且两个重复元素键值名不同时,当此函数把这个重复元素值作为键名后,会先后两次对这个键名对应的元素值赋值,也就是说调换完成后得到的新数组,对应的键名对应的元素值为第二次所赋的值
数组的序列化
- 使serialize()函数将数组的数据转化为字符串,使用unserialize()函数将字符串数据转换为数组
清空数组
- 使用unset()函数可以将数组以及所占用的资源完全释放
字符串
字符串的单引号和双引号
- 使用单引号和双引号来表示字符串,虽然表面上看起没有什么区别,但是对于存在字符串中的变量来说是不一样的:双引号会输出变量的值,单引号则直接显示变量名称。
- 双引号中可以通过“\”转义符输出特殊字符
- \n:换行且回到下一回的最前端
- \t:Tab
- \s:空白符
- \\:反斜杠
- \0:ASCII码的0
- \$:转义为单纯的美元符号,而不再作为变量声明的标识符
- \r:换行
- {octal#}:八进制转义
- \x{hexadecimal#}:十六进制转义
- 单引号中可以通过“\”转义符输出特殊字符
- \’:转义为单引号本身,而不作为字符串识别符
- \\:反斜杠
字符串的连接符
- 即“.”,可以直接连接两个字符串,可以连接两个字符串变量,也可以连接字符串和字符串变量
- 还可以使用{}方法连接字符串,此方法类似于C语言中的printf的占位符
-
$a="3"; $b="6": $c="012{$a}45{$b}789"; echo $c;
-
字符串的基本操作
- 手动和自动转义字符串中的字符
- 手动转义字符串数据,就是在引号内通过使用反斜杠使一些特殊字符转义为普通字符
- 自动转义字符串的字符,是通过PHP的内置函数addslashes()来完成。此函数返回在预定义字符之前添加反斜杠的字符串,预定义字符包括单引号、双引号、反斜杠和NULL
- 计算字符串的长度
- 使用strlen()函数实现,中文字符占两个字符位,每个空格占一个字符位
- 字符串单词的统计
- 使用str_word_count()函数可以实现,仅限于基于ASCII码的英文单词,不对UTF8的中文字符起作用
- 清理字符串中的空格
- ltrim():从左边清楚字符串头部的空格
- rtrim():从右边清除字符串头部的空格
- trim():从字符串两边同时去除字符串头部和尾部的空格
- 字符串的拆分和组合
- explode(拆分依据,字符串):根据拆分依据(如空格、下划线等)拆分字符串并且放入一个数组中
- implode(组合间隔,数组):将数组的元素以组合间隔组合成字符串
- 字符串子串的截取
- substr(目标字符串,起始位置,截取长度):截取长度可以为负数,如果为负数则截取从起始位置开始往后除去从目标字符串结尾算起的长度数的字符以外的所有字符
- 字符串子串的替换
- substr_replace(目标字符串,替换字符串,起始位置,替换长度):用替换字符串替换目标字符串中从起始位置开始往后的第替换长度个字符
- 字符串查找
- strstr(目标字符串,需查找的字符串):当函数找到需要查找的字符或者字符串时,则返回从第一个查找到字符串的位置往后所有的字符串内容
- stristr()函数为不敏感查找,对字符的大小写不区分,用法同上
感谢。。