数组
手工遍历
- key():当前键名
- current():当前值
- next():指针后移,几个next,后移几次,直到没有,值为0
- prev():指针前移
- reset():指针重置到第一个
- end():指针指向最后一个
自动遍历
- if条件判断遍历
- foreach遍历
解构遍历
- 索引数组解构,list(),直接list中的变量一一对应数组中的值
- 关联数组解构,list()中数组的键对应变量名,变量指向,对应关联的值,相当于二次传递
- extract():直接插入数组,直接用’$’+’键名’进行调用
二维数组遍历
- foreach+list进行遍历
数组函数
- array_values():将数组的值,取出来,组成一个新数组,键名会重置,格式:array_value(函数名)
- in_array():查询某个元素是否在这个数组中,格式:(‘值’,数组名),返回的是布尔值
- array_search():查询值在数组中的索引,(‘值’,数组名),返回索引,可以通过索引引用值
- array_unique():去重数组中的值,并返回新的数组
- count():数组值的计数,
- array_count_values():统计值出现的次数,可以对每个值计数,返回的也是一个数组键为原数组的值,值为计数;
- array_sum():数组中的值进行求和,字符串解析成0,字符串中含数值,即不为0,为该值
- array_product():数组中的值进行乘积,字符串解析成0,字符串中含数值,即不为0,为该值
栈操作
- 成员的增删,只允许在数组的一端进行
- 栈操作本质上是增删受限的操作
- array_push():尾部增加值,返回值为增加成功的数量
- array_pop():尾部删除,返回值为删除的值
- array_unshift():头部添加值,返回值为增加成功的数量
- array_shift():头部删除,返回值为删除的值
队列
注:索引数组按照键值排序添加,关联数组添加键值还是为数值
- 尾部追加,头部删除:array_push(),array_shift()
- 头部追加,尾部删除:array_unshift(),array_pop()
<!-- 作业,队列 -->
索引数组排序
注:以下函数只针对索引数组,如果是关联数组,则会转为索引数组,原键值丢失
- sort():按照值排序数组,字符串在前,数值在后,升序排列,键名重置
- asort():按照值排序数组,字符串在前,数值在后,升序排列,键名不重置
- rsort():按照值排序数组,字符串在前,数值在后,倒序排列,键名重置
- arsort():按照值排序数组,字符串在前,数值在后,倒序排列,键名不重置
- shuffle():随机打乱数组,每次刷新一次,打乱一次
关联数组排序
- ksort():按照键排序,升序排列,键位字母按照字母表正序
- krsort():按照键排序,倒序排列,键位字母按照字母表倒序
- usort():自定义排列,格式(数组名,排序方法-函数),改函数方法除了正序倒序排列,应该还有其他方法,待验证
查询与替换
索引数组查询与替换
- array_slice():取出一部分成员,格式:(数组名,起始索引,数量),数量不写,默认取到结束,返回值为取出的数组,原数组不变
- array_splice():增删改,原数组变化
2.1 删除,格式:(数组名,起始索引,数量),返回值是删除的数组,//原数组是删除后的数组
2.2 修改,格式:(数组名,起始索引,数量,[删除数量相同个数的成员]),删除后替换
2.3 新增,格式:(数组名,起始索引,0,[成员]),添加成员;关联数组添加与删除
- array_merge():关联数组添加元素([健=>值],目标数组),添加后,数组需要重新定义变量,或者’+’连接,如:[健=>值] + 目标数组,如果连接的数组元素,原数组存在,则’+’号,代表更换此数组元素到第一个;
- 删除参考栈操作的头尾删除,或者数组回调过滤器删除
数组回调
- array_filter():只返回数组中为true的元素组成的数组,
1.1 只返回数组中为true的元素组成的数组,格式:($arr),空数组为false,空对象为true
1.2 也可以对数组进行自定义条件过滤,格式:($arr,函数)—is_scalar()判断标量 - array_map():对每个成员,做回调处理,返回新数组
1.1 格式(函数,$arr): - array_reduce():迭代/归并处理函数
- array_walk():使用自定义函数进行回调处理,返回布尔值
其他
- gettype():获取数据类型,如:array,object
- get_object_vars():获取对象内的元素
- array_key_exists():判断是否存在某一个健,返回布尔值
- array_keys():返回所有的健作为一个索引数组
- range():定义一个范围数组,格式:(起始值,结束值,步长),可以用数字,也可以用英文字母;
- array_flip():将数组中的值与键交换
案例源码
$arr6 = ['id'=>200,'name'=>'wang','score'=>160,'分类3'=>'满分'];
$arr10 = ['id'=>200,'name'=>'wang','score'=>160,'分类3'=>'满分'];
$arr10 = array_merge(['备注'=>'优秀学生'],$arr10); // 添加关联数组的元素与值
echo array_key_exists('id',$arr6); //判断是否存在某一个健,返回布尔值
printf('<pre>%s<pre>',print_r(array_keys($arr6),true)); // 返回数组的键作为一个索引数组
$arr11 = ['id'=>200,'name'=>'wang','score'=>160,'分类3'=>'满分'];
$number = range(0, 12,2); //定义一个范围数组,格式:(起始值,结束值,步长),可以用数字,也可以用英文字
printf('<pre>%s<pre>',print_r($number,true));
$arr11 = ['id'=>200,'name'=>'wang','score'=>160,'分类3'=>'满分'];
printf('<pre>%s<pre>',print_r(array_flip($arr11),true)); //将数组中的值与键交换
案例结果