系统数组函数的分类

一、创建填充

(一)创建
编号函数描述
1array()创建数组。
2range()创建一个包含指定范围的元素的数组。
3compact()创建一个包含变量名和它们的值的数组。
(二)填充
编号函数描述
1array_fill()用给定的键值填充数组。
2array_fill_keys()用给定的指定键名的键值填充数组
3array_pad将指定数量的带有指定值的元素插入到数组中。

二、存在检查

编号函数描述
1array_key_exists()检查指定的键名是否存在于数组中。
2in_array()检查数组中是否存在指定的值。

三、集合运算

(一)并集
编号函数描述
1array_intersect()比较数组,返回两个数组的交集(只比较键值)。
2array_intersect_key()比较数组,返回两个数组的交集(只比较键名)。
3array_intersect_assoc比较数组,返回两个数组的交集(比较键名和键值)。
(二)差集
编号函数描述
1array_diff()比较数组,返回两个数组的差集(只比较键值)。
2array_diff_key()比较数组,返回两个数组的差集(只比较键名)。
3array_diff_assoc比较数组,返回两个数组的差集(比较键名和键值)。

四、数据结构

编号函数描述
1array_shift()删除数组中的第一个元素,并返回被删除元素的值。
2array_unshift()在数组开头插入一个或多个元素。
3array_push将一个或多个元素插入数组的末尾(入栈)。
4array_pop删除数组中的最后一个元素(出栈)。

五、指针函数

编号函数描述
1reset()重置指针,使数组指针回到首位;
2end()将数组的内部指针指向最后一个单元。
3prev指针上移,获取上一个元素的值;
4next指针下移,获取下一个元素的值。
5currentcurrent:获取当前指针对应的元素值;(指针不移动)
6key获取当前指针对应的下标值。(指针不移动)

六、回调相关

编号函数描述
1array_map()将用户自定义函数作用到给定数组的每个值上,返回新的值。
2array_filter()用回调函数过滤数组中的元素。
3array_walk对数组中的每个成员应用用户函数。
4array_reduce过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。

七、聚合函数

借鉴了 MySQL 中聚合函数的概念。

编号函数描述
1array_sum()返回数组中所有值的和。
2array_product()计算数组中所有值的乘积。
3count返回数组中元素的数目。
4array_count_values用于统计数组中所有值出现的次数。

八、排序函数

编号函数描述
1sort()对数组进行顺序排序。
2rsort()对数组进行逆序排序。
3asort对数组进行顺序排序并保持索引关系。
4arsort数组进行逆序排序并保持索引关系。
5ksort对数组按照键名进行顺序排序。
6krsort对数组按照键名进行逆序排序。
7shuffle随机打乱数组顺序。

九、分割合并

编号函数描述
1array_chunk()把一个数组分割为新的数组块。
2array_merge()把一个或多个数组合并为一个数组。
3array_combine通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组

十、获取数据

(一)获取键
编号函数描述
1array_keys()返回数组中所有的键名。
2array_rand()返回一个包含随机键名的数组。(感觉这个函数名取得不贴切,并不能根据函数名就知道它的功能)
3array_key_first/last获取指定数组的第一个(最后一个)键值。
(二)获取值
编号函数描述
1array_values()返回数组中所有的值。
2array_column()返回输入数组中某个单一列的值。(多维数组)
(三)获取局部
编号函数描述
1array_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 为正时

offsetval
1a
2b
3c
4d
5e

当 offset 为负时

offsetval
-1a
-2e
-3d
-4c
-5b

十一、其他函数

(一)去重
编号函数描述
1array_unique()删除数组中重复的值。
(二)翻转
编号函数描述
1array_flip()键值翻转。
2array_reverse()顺序翻转
(三)替换
编号函数描述
1array_replace()使用第二个数组($a2)的值替换第一个数组($a1)的值;
2array_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 为负数时

offsetlength被移除的部分
1-1[b,c,d]
1-2[b,c]
1-3[b]
(四)其他
编号函数描述
1array_change_key_case()将数组的所有的键转换为大写字母
2list()为一组变量赋值。

参考资料

  1. PHP Array 简介
  2. 怎么快速记忆系统数组函数
  3. PHP 数组函数分类和整理
  4. array_walk

注:加粗意为没怎么接触过或者不熟悉,回调相关的数组函数改天再写一篇博客。


Moonshadow2333
28 声望0 粉丝

征途漫漫