PHP数组常用函数(附带实例)
PHP 内置了许多数组函数,例如基本数组函数、数组排序函数和数组检索函数等。本节将对常用的数组函数进行详细讲解。
count() 函数的使用示例如下:
range() 函数的第 1 个参数是起始值;第 2 个参数是结束值;第 3 个参数是可选参数,用于定义起始值和结束值的增量,默认为 1。
range() 函数的使用示例如下:
array_merge() 函数的参数是要合并的数组,该函数的使用示例如下:
array_chunk() 函数的使用示例如下:
常用的数组排序函数如下表所示:
下面使用 sort() 函数和 rsort() 函数演示数组排序,示例代码如下:
常用的数组检索函数如下表所示:
下面对 in_array() 函数和 array_unique() 函数进行详细讲解。
in_array() 函数的使用示例如下:
array_unique() 函数的使用示例如下:
PHP 基本数组函数
PHP 常用的基本数组函数有 count()、range()、array_merge()、array_chunk() 等,下面对这些基本数组函数进行讲解。1) count()函数
count() 函数用于计算数组中元素的个数,该函数的第 1 个参数是要计算的数组。第 2 个参数是计算的维度,默认值为 0,表示计算一维数组的元素个数;当设置为 1 时,表示计算二维数组的元素个数,依此类推。count() 函数的使用示例如下:
$stu = [ ['Tom', 'male', 18], ['Alice', 'female', 15], ['Julia', 'female', 14] ]; echo count($stu); // 输出结果:3 echo count($stu, 1); // 输出结果:12在上述示例代码中,当省略 count() 函数的第 2 个参数时,$stu 数组的元素个数是 3;当第 2 个参数设置成 1 时,$stu 数组的元素个数是 12。
2) range()函数
range() 函数用于根据范围创建数组,通常使用字母或数字指定范围,创建的数组包含范围的起始值。range() 函数的第 1 个参数是起始值;第 2 个参数是结束值;第 3 个参数是可选参数,用于定义起始值和结束值的增量,默认为 1。
range() 函数的使用示例如下:
$arr = range('a', 'c'); print_r($arr); // 输出结果:Array ( [0] => a [1] => b [2] => c ) $data = range(0, 10, 3); print_r($data); // 输出结果:Array ( [0] => 0 [1] => 3 [2] => 6 [3] => 9 )在上述示例代码中,第 1 行代码指定创建的数组范围是 a~c,从输出结果可以看出,数组中包含 a、b、c;第 3 行代码指定创建的数组范围是 0~10,并设置第 3 个参数为 3,从输出结果可以看出,数组中包含 0、3、6、9。
3) array_merge()函数
array_merge() 函数用于合并一个或多个数组,如果合并的数组中有相同的字符串键名,则后面的值覆盖前面的值;如果合并的数组中有相同的数字键名,则会将相同的数字键名对应的值附加到合并的结果中。array_merge() 函数的参数是要合并的数组,该函数的使用示例如下:
$arr1 = ['food' => 'tea', 2, 4]; $arr2 = ['a', 'food' => 'Cod', 'type' => 'jpg', 4]; $result = array_merge($arr1, $arr2); // 输出结果:Array([food]=>Cod [0]=>2 [1]=>4 [2]=>a [type]=>jpg [3]=>4 ) print_r($result);从上述示例代码可以看出,$arr1 和 $arr2 都有键为 food 的数组元素,在合并时,$arr2 中的值会覆盖 $arr1 中的值,最终键为 food、值为 Cod;$arr2 和 $arr1 都有键为 1 的数组元素,在合并时,键会以连续方式重新索引,合并后 $arr1 中的 4 的键为 1,$arr2 中的 4 的键为 3。
4) array_chunk()函数
array_chunk() 函数可以将一个数组分割成多个,该函数的第 1 个参数是待分割数组。第 2 个参数是分割后每个数组中元素的个数,最后一个数组的元素个数可能会小于该参数指定的个数。第 3 个参数是一个布尔值,用于指定是否保留原数组的键名,默认值 false 表示不保留原数组的键名,分割后数组的键从 0 开始;值为 true 表示保留待分割数组中原有的键名。array_chunk() 函数的使用示例如下:
$arr = ['one' => 1, 'two' => 2, 'three' => 3]; // 输出结果:Array([0]=>Array([0]=>1 [1]=>2) [1]=>Array([0]=>3)) print_r(array_chunk($arr, 2)); // 输出结果:Array ([0]=>Array([one]=>1 [two]=>2) [1]=>Array([three]=>3)) print_r(array_chunk($arr, 2, true));在上述代码中,将 $arr 数组分割。在不设置第 3 个参数的情况下,分割后的数组键从 0 开始;设置第 3 个参数值为 true 时,分割后数组的键使用原有的键名。
PHP数组排序函数
通常情况下,若要对数组进行排序,需要先遍历数组,再比较数组中的每个元素,最终完成数组的排序。为了便于开发数组排序功能,PHP 提供了很多内置的数组排序函数,不需要遍历数组即可完成排序。常用的数组排序函数如下表所示:
函数 | 功能描述 |
---|---|
sort(array $array, int $flags) | 对数组升序排列 |
rsort(array $array, int $flags) | 对数组降序排列 |
ksort(array $array, int $flags) | 根据数组键名升序排列 |
krsort(array $array, int $flags) | 根据数组键名降序排列 |
asort(array $array, int $flags) | 对数组升序排列并保持键与值的关联 |
arsort(array $array, int $flags) | 对数组降序排列并保持键与值的关联 |
shuffle(array $array) | 打乱数组顺序 |
array_reverse(array $array, bool $preserve_keys) | 返回元素顺序相反的数组 |
下面使用 sort() 函数和 rsort() 函数演示数组排序,示例代码如下:
$arr = ['dog', 'lion', 'cat']; sort($arr); print_r($arr); // 输出结果:Array ( [0] => cat [1] => dog [2] => lion ) rsort($arr); print_r($arr); // 输出结果:Array ( [0] => lion [1] => dog [2] => cat )从上述代码的输出结果可以看出,sort() 函数按照数组元素首字母的ASCII值对数组进行升序排列,rsort() 函数按照数组元素首字母的 ASCII 值对数组进行降序排列。
PHP数组检索函数
在程序开发过程中,经常需要查询和获取数组的键和值。为此,PHP 提供了数组检索函数。常用的数组检索函数如下表所示:
函数 | 功能描述 |
---|---|
array_search(mixed $needle, array $haystack, bool $strict = false) | 在数组中搜索给定的值 |
array_unique(array $array, int $flags = SORT_STRING) | 移除数组中重复的值 |
array_column(array $array, int|string|null $column_key, int|string|null $index_key = null) | 返回数组中指定列的值 |
array_keys(array $array) | 返回数组的键名 |
array_values(array $array) | 返回数组中所有的值 |
array_rand(array $array, int $num = 1) | 从数组随机取出一个或多个随机键 |
key(array|object $array) | 从关联数组中取得键名 |
in_array(mixed $needle, array $haystack, bool $strict = false) | 检查数组中是否存在某个值 |
下面对 in_array() 函数和 array_unique() 函数进行详细讲解。
1) in_array()函数
in_array() 函数用于检查数组中是否存在某个值。该函数的第 1 个参数是要检测的值;第 2 个参数是要检测的数组;第 3 个参数用于设置是否检测数据类型,默认值 false 表示不检测,true 表示检测。in_array() 函数的使用示例如下:
$tel = ['110', '120', '119']; var_dump(in_array(120, $tel)); // 输出结果:bool(true) var_dump(in_array(120, $tel, true)); // 输出结果:bool(false)在上述示例代码中,定义了数组 $tel,数组中的值是字符串型;第 2 行代码使用 in_array() 函数在 $tel 数组中搜索整型值 120,返回结果是 true;第 3 行代码使用 in_array() 函数时将第 3 个参数设置为 true,不仅搜索值为 120 的元素,还会检查值的数据类型是否相同,返回结果是 false。
2) array_unique()函数
array_unique() 函数用于移除数组中重复的值。该函数的第 1 个参数是待操作的数组;第 2 个参数是比较方式,省略该参数时,默认按照字符串的方式比较数组元素是否重复。array_unique() 函数的使用示例如下:
$array = [1, 2, 2, 3, 4, 4]; $result = array_unique($array); print_r($result); // 输出结果:Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 )从上述示例代码的输出结果可以看出,使用 array_unique() 函数去除了 $array 中的重复值,最终的结果为 1、2、3、4。