系统数组函数的分类
一、创建填充
(一)创建
编号 | 函数 | 描述 |
---|
1 | array() | 创建数组。 |
2 | range() | 创建一个包含指定范围的元素的数组。 |
3 | compact() | 创建一个包含变量名和它们的值的数组。 |
(二)填充
编号 | 函数 | 描述 |
---|
1 | array_fill() | 用给定的键值填充数组。 |
2 | array_fill_keys() | 用给定的指定键名的键值填充数组。 |
3 | array_pad | 将指定数量的带有指定值的元素插入到数组中。 |
二、存在检查
编号 | 函数 | 描述 |
---|
1 | array_key_exists() | 检查指定的键名是否存在于数组中。 |
2 | in_array() | 检查数组中是否存在指定的值。 |
三、集合运算
(一)并集
编号 | 函数 | 描述 |
---|
1 | array_intersect() | 比较数组,返回两个数组的交集(只比较键值)。 |
2 | array_intersect_key() | 比较数组,返回两个数组的交集(只比较键名)。 |
3 | array_intersect_assoc | 比较数组,返回两个数组的交集(比较键名和键值)。 |
(二)差集
编号 | 函数 | 描述 |
---|
1 | array_diff() | 比较数组,返回两个数组的差集(只比较键值)。 |
2 | array_diff_key() | 比较数组,返回两个数组的差集(只比较键名)。 |
3 | array_diff_assoc | 比较数组,返回两个数组的差集(比较键名和键值)。 |
四、数据结构
编号 | 函数 | 描述 |
---|
1 | array_shift() | 删除数组中的第一个元素,并返回被删除元素的值。 |
2 | array_unshift() | 在数组开头插入一个或多个元素。 |
3 | array_push | 将一个或多个元素插入数组的末尾(入栈)。 |
4 | array_pop | 删除数组中的最后一个元素(出栈)。 |
五、指针函数
编号 | 函数 | 描述 |
---|
1 | reset() | 重置指针,使数组指针回到首位; |
2 | end() | 将数组的内部指针指向最后一个单元。 |
3 | prev | 指针上移,获取上一个元素的值; |
4 | next | 指针下移,获取下一个元素的值。 |
5 | current | current:获取当前指针对应的元素值;(指针不移动) |
6 | key | 获取当前指针对应的下标值。(指针不移动) |
六、回调相关
编号 | 函数 | 描述 |
---|
1 | array_map() | 将用户自定义函数作用到给定数组的每个值上,返回新的值。 |
2 | array_filter() | 用回调函数过滤数组中的元素。 |
3 | array_walk | 对数组中的每个成员应用用户函数。 |
4 | array_reduce | 过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。 |
七、聚合函数
借鉴了 MySQL 中聚合函数的概念。
编号 | 函数 | 描述 |
---|
1 | array_sum() | 返回数组中所有值的和。 |
2 | array_product() | 计算数组中所有值的乘积。 |
3 | count | 返回数组中元素的数目。 |
4 | array_count_values | 用于统计数组中所有值出现的次数。 |
八、排序函数
编号 | 函数 | 描述 |
---|
1 | sort() | 对数组进行顺序排序。 |
2 | rsort() | 对数组进行逆序排序。 |
3 | asort | 对数组进行顺序排序并保持索引关系。 |
4 | arsort | 数组进行逆序排序并保持索引关系。 |
5 | ksort | 对数组按照键名进行顺序排序。 |
6 | krsort | 对数组按照键名进行逆序排序。 |
7 | shuffle | 随机打乱数组顺序。 |
九、分割合并
编号 | 函数 | 描述 |
---|
1 | array_chunk() | 把一个数组分割为新的数组块。 |
2 | array_merge() | 把一个或多个数组合并为一个数组。 |
3 | array_combine | 通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。 |
十、获取数据
(一)获取键
编号 | 函数 | 描述 |
---|
1 | array_keys() | 返回数组中所有的键名。 |
2 | array_rand() | 返回一个包含随机键名的数组。(感觉这个函数名取得不贴切,并不能根据函数名就知道它的功能) |
3 | array_key_first/last | 获取指定数组的第一个(最后一个)键值。 |
(二)获取值
编号 | 函数 | 描述 |
---|
1 | array_values() | 返回数组中所有的值。 |
2 | array_column() | 返回输入数组中某个单一列的值。(多维数组) |
(三)获取局部
编号 | 函数 | 描述 |
---|
1 | array_slice() | 返回数组中的选定部分。 |
例子:
<?php
$arr = range('a','e'); // ['a','b','c','d','e'];
// var_dump($arr);
$re1 = array_slice($arr,2,1); // 'c'
$re2 = array_slice($arr,-2,1); // 'd'
var_dump($re1,$re2);
当 offset 为正时
当 offset 为负时
十一、其他函数
(一)去重
编号 | 函数 | 描述 |
---|
1 | array_unique() | 删除数组中重复的值。 |
(二)翻转
编号 | 函数 | 描述 |
---|
1 | array_flip() | 键值翻转。 |
2 | array_reverse() | 顺序翻转。 |
(三)替换
编号 | 函数 | 描述 |
---|
1 | array_replace() | 使用第二个数组($a2)的值替换第一个数组($a1)的值; |
2 | array_splice() | 把数组中的指定元素去掉并用其它值取代。(截肢-假肢) |
array_replace
函数的例子:
<?php
$base = ['orange','banana','apple'];
$replacements = [0=>'grape',2=>'cherry'];
$basket = array_replace($base,$replacements);
var_dump($basket);
/*
array(3) {
[0]=>
string(5) "grape"
[1]=>
string(6) "banana"
[2]=>
string(6) "cherry"
}
*/
array_splice
函数:
语法:
array_splice( array &$input, int $offset[, int $length = count($input)[, mixed $replacement = array()]] ) : array
返回值:
返回一个包含有被移除单元的数组。
例子:
<?php
$arr = range('a','e'); // ['a','b','c','d','e']
$re1 = array_splice($arr,1);
var_dump($arr,$re1);
/*
$arr is now
array(1) {
[0]=>
string(1) "a"
}
$re1 为被移除的部分
array(4) {
[0]=>
string(1) "b"
[1]=>
string(1) "c"
[2]=>
string(1) "d"
[3]=>
string(1) "e"
}
*/
$arr = range('a','e');
// 注意:使用 array_splice 函数后会改变原数组。
$re2 = array_splice($arr,1,-1);
var_dump($arr,$re2);
/*
$arr is now
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "e"
}
$re2 为被移除的部分
array(3) {
[0]=>
string(1) "b"
[1]=>
string(1) "c"
[2]=>
string(1) "d"
}
*/
$arr = range('a','e');
$re3 = array_splice($arr,-1,1);
/*
$arr is now
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}
$re3 为被移除的部分
array(1) {
[0]=>
string(1) "e"
}
*/
$arr = range('a','e');
$replacement = range('B','E');
$re4 = array_splice($arr,1,count($arr)-1,$replacement);
var_dump($arr,$re4);
/*
$arr is now
array(5) {
[0]=>
string(1) "a"
[1]=>
string(1) "B"
[2]=>
string(1) "C"
[3]=>
string(1) "D"
[4]=>
string(1) "E"
}
$re4 为被移除的部分
array(4) {
[0]=>
string(1) "b"
[1]=>
string(1) "c"
[2]=>
string(1) "d"
[3]=>
string(1) "e"
}
*/
当 offset
为负数的情况和 array_slice
函数 offset
为负数的情况一样,不再赘述。
当参数 length
为负数时
offset | length | 被移除的部分 |
---|
1 | -1 | [b,c,d] |
1 | -2 | [b,c] |
1 | -3 | [b] |
(四)其他
编号 | 函数 | 描述 |
---|
1 | array_change_key_case() | 将数组的所有的键转换为大写字母。 |
2 | list() | 为一组变量赋值。 |
参考资料
- PHP Array 简介
- 怎么快速记忆系统数组函数
- PHP 数组函数分类和整理
- array_walk
注:加粗意为没怎么接触过或者不熟悉,回调相关的数组函数改天再写一篇博客。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。