摘要:本文是对数组函数的一些实际应用的总结。实际中常用的数组array_values
,返回输入数组中所有的值并给其建立数字索引;array_filter
函数可以用回调函数过滤数组中的单元,我们可以指定具体的过滤值,也可以进行奇数和偶数过滤;有些情况下我们需要确认数组成员全部为真时,可以使用array_product
计算数组中所有值的乘积来进行处理; 当我们要统计 数组中重复次数最多的值,可以使用array_count_values
;使用array_chunk
将一个数组分割成指定大小的多个数组;array_diff_key
函数可以让我们使用键名比较计算数组的差集;当我们需要递归地合并一个或多个数组,可以使用array_merge_recursive
函数来进行处理。
概述
array_values()
— 返回输入数组中所有的值并给其建立数字索引。array_filter()
— 用回调函数过滤数组中的单元。array_product()
— 计算数组中所有值的乘积。array_count_values()
— 统计数组中所有值出现的次数,返回一个数组,键名为值,键值为统计的次数。array_chunk()
— 将一个数组分割成指定大小的多个数组。array_combine()
— 创建一个新数组,用一个数组的值作为其键名,另一个数组的值作为其值 。array_diff()
— 计算数组的差集。array_diff_assoc()
— 带索引检查计算数组的差集。array_diff_key()
— 使用键名比较计算数组的差集。array_merge_recursive()
— 递归地合并一个或多个数组。
array_values
array_values
— 返回输入数组中所有的值并给其建立数字索引。
格式:
1 | array_values ( array $array ) : array |
参数:
1 | 输入的数组 |
返回:
1 | 返回含所有值的索引数组。 |
示例一:基本使用
1 | <?php |
示例二:重置关联数组索引
1 |
|
示例三:从多维数组中获取特定键的所有值
1 |
|
array_filter
array_filter
— 用回调函数过滤数组中的单元。
格式:
1 | array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array |
说明:
1 | array_filter ( 输入的数组,回调函数,回调函数接收参数的形式(默认接受值)) |
返回:
1 | 返回过滤后的数组。 |
示例一:基本使用
1 | <?php |
注意:如果不填写
callback
函数,0、0.0、’0’字符串等这些可能有意义的值会被删除。所以如果清除的规则有所不同还需要自行编写callback
函数。
示例二:奇数和偶数过滤
1 |
|
示例三:过滤指定值
1 |
|
示例四:带 flag
标记的数组过滤
1 |
|
array_product
array_product
— 计算数组中所有值的乘积。
格式:
1 | array_product ( array $array ) : number |
参数:
1 | array_product ( 输入的数组) : number |
返回:
1 | 以整数或浮点数返回一个数组中所有值的乘积。 |
示例一:基本使用
1 |
|
示例二:确认数组成员全部为真
1 |
|
array_count_values
array_count_values
— 统计数组中所有值出现的次数,返回一个数组,键名为值,键值为统计的次数。
格式:
1 | array_count_values ( array $array ) : array |
参数:
1 | 输入的数组 |
返回:
1 | 返回一个数组: 数组的键是 array 里单元的值; 数组的值是 array 单元的值出现的次数。 |
示例1:基本使用
1 | <?php |
示例2:数组中重复次数最多的值
1 | <?php |
array_chunk
array_chunk
— 将一个数组分割成指定大小的多个数组。
格式:
1 | array_chunk ( array $array , int $size [, bool $preserve_keys = false ] ) : array |
参数:
1 | array $array:需要操作的数组。 |
返回:
1 | 返回一个索引从零开始的一个多维数组,每一维包含了指定个数的元素。 |
示例1:基本使用
1 |
|
示例1打印结果:
1 | Array |
array_combine
array_combine
— 创建一个新数组,用一个数组的值作为其键名,另一个数组的值作为其值 。
格式:
1 | array_combine ( array $keys , array $values ) : array |
参数:
1 | keys:将被作为新数组的键。 |
返回:
1 | 返回一个合并后的新数组,如果两个数组的单元数不同则返回 FALSE。 |
示例1:基本使用
1 | a = ['green', 'red', 'yellow']; |
示例1打印结果:
1 | Array |
array_diff
array_diff
— 计算数组的差集。
格式:
1 | array_diff ( array $array1 , array $array2 [, array $... ] ) : array |
参数:
1 | array1:从这个数组进行比较。 |
返回:
1 | 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值,键名保留不变。 |
示例1:基本使用
1 |
|
示例1的打印结果:
1 | Array |
array_diff_assoc
array_diff_assoc
— 带索引检查计算数组的差集。
格式:
1 | array_diff_assoc ( array $array1 , array $array2 [, array $... ] ) : array |
参数:
1 | array1:从这个数组进行比较 |
返回:
1 | 返回一个不在其他数组中出现的数组1的值。 |
示例1:基本使用
1 |
|
示例1的结果:
1 | Array |
注:因数组2中的red
的键名是1,和要比较的数组中red
的键名0不是同一个键名,因此 0 => "red"
会 出现在输出中。
array_diff_key
array_diff_key
— 使用键名比较计算数组的差集。
格式:
1 | array_diff_key ( array $array1 , array $array2 [, array $... ] ) : array |
参数:
1 | array1:从这个数组进行比较。 |
返回:
1 | 返回一个新数组,该数组包括了所有出现在数组1中的数组,但是未出现在其他数组中键名的值。 |
示例1:基本使用
1 |
|
示例1的打印结果:
1 | Array |
array_merge_recursive
array_merge_recursive
— 递归地合并一个或多个数组。
格式:
1 | array_merge_recursive ( array $array1 [, array $... ] ) : array |
参数:
1 | array1:要合并的初始数组。 |
返回:
1 | 返回一个递归合并后的新数组。 |
示例1:基本使用
1 |
|
示例1的打印结果:
1 | Array |
示例2:与array_merge
进行比较
1 |
|
示例2的打印结果:
1 | Array |