首页 > 编程笔记 > PHP笔记 阅读:3

PHP数组常用函数(附带实例)

PHP 内置了许多数组函数,例如基本数组函数、数组排序函数和数组检索函数等。本节将对常用的数组函数进行详细讲解。

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。

相关文章