PHP 之数组
一、常用数组函数
- array_change_key_case — 返回字符串键名全为小写或大写的数组
- array_chunk — 将一个数组分割成多个
- array_column — 返回数组中指定的一列
- array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
- array_count_values — 统计数组中所有的值出现的次数
- array_fill_keys — 使用指定的键和值填充数组
- array_fill — 用给定的值填充数组
- array_filter — 用回调函数过滤数组中的单元
- array_key_exists — 检查给定的键名或索引是否存在于数组中
- array_keys — 返回数组中部分的或所有的键名
- array_map — 将回调函数作用到给定数组的单元上
- array_merge — 合并一个或多个数组
- array_pop — 将数组最后一个单元弹出(出栈)
- array_push — 将一个或多个单元压入数组的末尾(入栈)
- array_rand — 从数组中随机取出一个或多个单元
- array_reduce — 用回调函数迭代地将数组简化为单一的值
- array_replace — 使用传递的数组替换第一个数组的元素
- array_reverse — 返回一个单元顺序相反的数组
- array_search — 在数组中搜索给定的值,如果成功则返回相应的键名
- array_shift — 将数组开头的单元移出数组
- array_slice — 从数组中取出一段
- array_splice — 把数组中的一部分去掉并用其它值取代
- array_sum — 计算数组中所有值的和
- array_unique — 移除数组中重复的值
- array_unshift — 在数组开头插入一个或多个单元
- array_values — 返回数组中所有的值
- array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
- array — 新建一个数组
- arsort — 对数组进行逆向排序并保持索引关系
- asort — 对数组进行排序并保持索引关系
- compact — 建立一个数组,包括变量名和它们的值
- count — 计算数组中的单元数目或对象中的属性个数
- current — 返回数组中的当前单元
- each — 返回数组中当前的键/值对并将数组指针向前移动一步
- end — 将数组的内部指针指向最后一个单元
- extract — 从数组中将变量导入到当前的符号表
- in_array — 检查数组中是否存在某个值
- key_exists — 别名 array_key_exists
- key — 从关联数组中取得键名
- krsort — 对数组按照键名逆向排序
- ksort — 对数组按照键名排序
- list — 把数组中的值赋给一些变量
- natsort — 用“自然排序”算法对数组排序
- next — 将数组中的内部指针向前移动一位
- pos — current 的别名
- prev — 将数组的内部指针倒回一位
- range — 建立一个包含指定范围单元的数组
- reset — 将数组的内部指针指向第一个单元
- rsort — 对数组逆向排序
- shuffle — 将数组打乱
- sizeof — count 的别名
- sort — 对数组排序
二、数组实例
1、冒泡排序
演示数组为:
$a = array(9, 3, 5, 8, 2, 7); //下标为0,1,2,3,4,5
演算过程描述:
从数组的左边开始,依次两两比较相邻的2个数据的大小,如果发现左边的比右边的大,则将他们进行交换。这样进行“一趟”之后,必然可以确定最大的一个数据放在最右边。
按此方式,对“剩余的数据”继续进行下一趟,则有会确定这些剩余数据耳朵最大值放在剩余位置的最右边。
演示:
原始数组: |
9 |
3 |
5 |
8 |
2 |
7 |
第1趟后: |
3 |
5 |
8 |
2 |
7 |
9 |
第2趟后: |
3 |
5 |
2 |
7 |
8 |
9 |
第3趟后: |
3 |
2 |
5 |
7 |
8 |
9 |
第4趟后: |
2 |
3 |
5 |
7 |
8 |
9 |
第5趟后: |
2 |
3 |
5 |
7 |
8 |
9 |
规律描述:
1,假设数组的数据有n个。
2,要进行比较的“趟数”为n-1;
3,每一趟要比较的数据个数都比前一趟少一个,第一趟要比较n个(即比较n-1次)
4,每一次比较,如果发现“左边数据”大于“右边数据”,就对这两者进行交换位置。
代码演示如下:
2、选择排序
演示数组为:
$a = array(9, 3, 5, 8, 2, 7); //下标为0,1,2,3,4,5
演算过程描述:
求得一个数组的最大值的下标,并将这个最大值下标的单元跟最后一个单元进行交换;
然后,继续从剩余数据中取得最大值的下标,并将这个最大值下标的单元跟剩余的最后一个单元交换
以此类推,直到只剩下一个数据,就不用找了。
演示:
原始数组: |
9 |
3 |
5 |
8 |
2 |
7 |
第1趟后: |
7 |
3 |
5 |
8 |
2 |
9 |
第2趟后: |
7 |
3 |
5 |
2 |
8 |
9 |
第3趟后: |
2 |
3 |
5 |
7 |
8 |
9 |
第4趟后: |
2 |
3 |
5 |
7 |
8 |
9 |
第5趟后: |
2 |
3 |
5 |
7 |
8 |
9 |
规律描述:
1,假设数组的数据有n个。
2,要进行查找最大值单元并进行交换的“趟数”为n-1;
3,每一趟都要求出“剩余数据”中的最大值单元,并且,剩余数据的数量每一趟都少1个,第一趟有n个。
4,每一趟找出最大值单元后,都要进行交换:最大值单元,跟剩余数据中的最后一个单元交换。
3、二分法查找
方式一:
方式二: