前言
本文已收录于PHP全栈系列专栏:PHP快速入门与实战
一、数组函数使用例子1-10
1. is_array
用于判断一个变量是否为数组,返回布尔值。
语法:
bool is_array ( mixed $var )
示例:
$arr = array(1, 2, 3);
$result = is_array($arr); // true
2. array_change_key_case
用于将数组的键名大小写进行修改。
语法:
array array_change_key_case ( array $array [, int $case = CASE_LOWER ] )
示例:
$arr = array('A' => 1, 'B' => 2);
$result = array_change_key_case($arr, CASE_UPPER);
print_r($result); // output: Array ( [A] => 1 [B] => 2 )
3. array_chunk
用于将一个数组分割成多个小数组。
语法:
array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )
示例:
$arr = array(1, 2, 3, 4, 5);
$result = array_chunk($arr, 2);
print_r($result); // output: Array ( [0] => Array ( [0] => 1 [1] => 2 ) [1] => Array ( [0] => 3 [1] => 4 ) [2] => Array ( [0] => 5 ) )
4. array_column
从多维数组中取得某个键对应的值,返回一维数组。
语法:
array array_column ( array $input , mixed $column_key [, mixed $index_key = null ] )
示例:
$arr = array(
array('id' => 1, 'name' => 'Tom'),
array('id' => 2, 'name' => 'Jerry')
);
$result = array_column($arr, 'name');
print_r($result); // output: Array ( [0] => Tom [1] => Jerry )
5. array_combine
用于将一个数组的键与另一个数组的值进行组合,返回新的数组。
语法:
array array_combine ( array $keys , array $values )
示例:
$keys = array(1, 2, 3);
$values = array('a', 'b', 'c');
$result = array_combine($keys, $values);
print_r($result); // output: Array ( [1] => a [2] => b [3] => c )
6. array_count_values
用于统计数组中每个值出现的次数,返回关联数组。
语法:
array array_count_values ( array $array )
示例:
$arr = array(1, 2, 2, 3, 3, 3);
$result = array_count_values($arr);
print_r($result); // output: Array ( [1] => 1 [2] => 2 [3] => 3 )
7. array_diff_assoc
用于比较多个数组的差异,返回一个新数组,包含在第一个参数数组中但不包含在其他参数数组中的值。
语法:
array array_diff_assoc ( array $array1 , array $array2 [, array $... ] )
示例:
$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('a' => 1, 'b' => 2);
$result = array_diff_assoc($arr1, $arr2);
print_r($result); // output: Array ( [c] => 3 )
8. array_diff_key
用于比较多个数组的差异,返回一个新数组,包含在第一个参数数组中但不包含在其他参数数组中的键名。
语法:
array array_diff_key ( array $array1 , array $array2 [, array $... ] )
示例:
$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('a' => 1, 'b' => 2);
$result = array_diff_key($arr1, $arr2);
print_r($result); // output: Array ( [c] => 3 )
9. array_diff_uassoc
用于比较多个数组的差异,返回一个新数组,包含在第一个参数数组中但不包含在其他参数数组中的值,使用回调函数进行比较键名和键值。
语法:
array array_diff_uassoc ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )
示例:
function compare($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('a' => 1, 'b' => 4);
$result = array_diff_uassoc($arr1, $arr2, 'compare');
print_r($result); // output: Array ( [b] => 2 [c] => 3 )
10. array_diff_ukey
用于比较多个数组的差异,返回一个新数组,包含在第一个参数数组中但不包含在其他参数数组中的键名,使用回调函数进行比较。
语法:
array array_diff_ukey ( array $array1 , array $array2 [, array $... ], callable $key_compare_func )
示例:
function compare($a, $b) {
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
}
$arr1 = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2 = array('a' => 1, 'b' => 4);
$result = array_diff_ukey($arr1, $arr2, 'compare');
print_r($result); // output: Array ( [c] => 3 )
二、数组函数使用例子11-20
11. array_fill
函数作用:用给定的值填充一个数组,根据指定的索引范围。
$filled_array = array_fill(0, 3, 'apple');
var_dump($filled_array);
// 输出结果:
array(3) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
[2]=>
string(5) "apple"
}
12. array_filter
函数作用:过滤数组中不符合条件的元素。
$numbers = [1, 2, 3, 4, 5];
$filtered_numbers = array_filter($numbers, function($num){
return $num % 2 == 0;
});
var_dump($filtered_numbers);
// 输出结果:
array(2) {
[1]=>
int(2)
[3]=>
int(4)
}
13. array_intersect_assoc
函数作用:返回两个或更多数组中有相同键名和键值的元素。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$intersected_array = array_intersect_assoc($array1, $array2);
var_dump($intersected_array);
// 输出结果:
array(1) {
["b"]=>
int(2)
}
14. array_intersect_key
函数作用:返回两个或更多数组中有相同键名的元素。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['b' => 2, 'd' => 4];
$intersected_array = array_intersect_key($array1, $array2);
var_dump($intersected_array);
// 输出结果:
array(1) {
["b"]=>
int(2)
}
15. array_intersect_uassoc
函数作用:返回两个或更多数组中有相同键名和键值的元素。使用用户自定义的比较函数来比较键名和键值。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['B' => 2, 'D' => 4];
$intersected_array = array_intersect_uassoc($array1, $array2, 'strcasecmp');
var_dump($intersected_array);
// 输出结果:
array(1) {
["b"]=>
int(2)
}
16. array_intersect_ukey
函数作用:返回两个或更多数组中有相同键名的元素。使用用户自定义的比较函数来比较键名。
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['B' => 2, 'D' => 4];
$intersected_array = array_intersect_ukey($array1, $array2, 'strcasecmp');
var_dump($intersected_array);
// 输出结果:
array(1) {
["b"]=>
int(2)
}
17. array_map
函数作用:返回一个映射数组,其中每个元素都是回调函数的结果。
$numbers = [1, 2, 3];
$mapped_array = array_map(function($num){
return $num * 2;
}, $numbers);
var_dump($mapped_array);
// 输出结果:
array(3) {
[0]=>
int(2)
[1]=>
int(4)
[2]=>
int(6)
}
18. array_merge_recursive
函数作用:递归地合并一个或多个数组。
$array1 = ['a' => ['b' => 1]];
$array2 = ['a' => ['c' => 2]];
$merged_array = array_merge_recursive($array1, $array2);
var_dump($merged_array);
// 输出结果:
array(1) {
["a"]=>
array(2) {
["b"]=>
int(1)
["c"]=>
int(2)
}
}
19. array_multisort
函数作用:对多个数组或多维数组进行排序。
$numbers = [5, 4, 3, 2, 1];
$names = ['Tom', 'Alice', 'Bob', 'David', 'Charlie'];
array_multisort($numbers, SORT_ASC, $names);
var_dump($names);
// 输出结果:
array(5) {
[0]=>
string(6) "Charlie"
[1]=>
string(5) "David"
[2]=>
string(5) "Alice"
[3]=>
string(3) "Bob"
[4]=>
string(3) "Tom"
}
20. array_pad
函数作用:在数组的开头或结尾填充数据。
$numbers = [1, 2, 3];
$padded_array = array_pad($numbers, 5, 0);
var_dump($padded_array);
// 输出结果:
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(0)
[4]=>
int(0)
}
三、数组函数使用例子21-30
21. array_product
使用数组元素的乘积计算并返回结果。
$numbers = array(1, 2, 3, 4);
$result = array_product($numbers);
echo $result; // 输出 24
22. array_reduce
使用回调函数对数组进行迭代,将数组中的元素依次从左到右折叠(也称为缩减),并返回最终的值。
$numbers = array(1, 2, 3, 4);
$result = array_reduce($numbers, function($carry, $item){
return $carry * $item;
});
echo $result; // 输出 24
23. array_replace
将一个数组的元素替换为另一个数组的对应元素。
$array1 = array('a', 'b', 'c');
$array2 = array(0 => 'd', 2 => 'e');
$result = array_replace($array1, $array2);
print_r($result); // 输出 Array ( [0] => d [1] => b [2] => e )
24. array_replace_recursive
递归地将一个数组的元素替换为另一个数组的对应元素。
$array1 = array('a', 'b', 'c' => array('x', 'y'));
$array2 = array(0 => 'd', 'c' => array(0 => 'z'));
$result = array_replace_recursive($array1, $array2);
print_r($result); // 输出 Array ( [0] => d [1] => b [c] => Array ( [0] => z [1] => y ) )
25. array_sum
计算数组所有元素的总和并返回。
$numbers = array(1, 2, 3, 4);
$result = array_sum($numbers);
echo $result; // 输出 10
26. array_udiff
使用用户自定义的回调函数对两个或多个数组进行比较,并返回差异的元素。
$array1 = array('a', 'b', 'c');
$array2 = array('b', 'c', 'd');
$result = array_udiff($array1, $array2, function($a, $b){
return strcmp($a, $b);
});
print_r($result); // 输出 Array ( [0] => a )
27. array_udiff_assoc
与 array_udiff
类似,但同时比较键和值。
$array1 = array('a' => 1, 'b' => 2, 'c' => 3);
$array2 = array('a' => 2, 'b' => 2, 'd' => 4);
$result = array_udiff_assoc($array1, $array2, function($a, $b){
if ($a === $b) {
return 0;
}
return ($a > $b) ? 1 : -1;
});
print_r($result); // 输出 Array ( [a] => 1 [c] => 3 )
28. array_walk
对数组的每个元素应用用户自定义的回调函数。
$array = array(1, 2, 3);
function multiply(&$value, $key){
$value *= 2;
}
array_walk($array, 'multiply');
print_r($array); // 输出 Array ( [0] => 2 [1] => 4 [2] => 6 )
29. array_walk_recursive
与 array_walk
类似,但递归执行。
$array = array('a' => array(1, 2), 'b' => array(3, 4));
function multiply(&$value, $key){
$value *= 2;
}
array_walk_recursive($array, 'multiply');
print_r($array); // 输出 Array ( [a] => Array ( [0] => 2 [1] => 4 ) [b] => Array ( [0] => 6 [1] => 8 ) )
30. asort
对数组按照值进行排序,并保留键值关联。
$array = array('b' => 2, 'a' => 1, 'c' => 3);
asort($array);
print_r($array); // 输出 Array ( [a] => 1 [b] => 2 [c] => 3 )
四、数组函数使用例子31-40
31. array_intersect()
求两个或多个数组的交集。
$array1 = array('apple', 'banana', 'orange');
$array2 = array('pear', 'banana', 'grape');
$result = array_intersect($array1, $array2);
print_r($result); // 输出:Array ( [1] => banana )
32. array_diff()
求两个数组的差集。
$array1 = array('apple', 'banana', 'orange');
$array2 = array('pear', 'banana', 'grape');
$result = array_diff($array1, $array2);
print_r($result); // 输出:Array ( [0] => apple [2] => orange )
33. array_merge()
将一个或多个数组合并为一个数组。
$array1 = array('apple', 'banana', 'orange');
$array2 = array('pear', 'banana', 'grape');
$result = array_merge($array1, $array2);
print_r($result); // 输出:Array ( [0] => apple [1] => banana [2] => orange [3] => pear [4] => banana [5] => grape )
34. array_push()
将一个或多个元素压入数组末尾。
$array1 = array('apple', 'banana', 'orange');
array_push($array1, 'pear', 'grape');
print_r($array1); // 输出:Array ( [0] => apple [1] => banana [2] => orange [3] => pear [4] => grape )
35. array_pop()
弹出数组最后一个值。
$array1 = array('apple', 'banana', 'orange');
$last = array_pop($array1);
print_r($array1); // 输出:Array ( [0] => apple [1] => banana )
echo $last; // 输出:orange
36. array_shift()
弹出数组第一个值。
$array1 = array('apple', 'banana', 'orange');
$first = array_shift($array1);
print_r($array1); // 输出:Array ( [0] => banana [1] => orange )
echo $first; // 输出:apple
37. array_unshift()
在数组开头插入一个或多个元素。
$array1 = array('apple', 'banana', 'orange');
array_unshift($array1, 'pear', 'grape');
print_r($array1); // 输出:Array ( [0] => pear [1] => grape [2] => apple [3] => banana [4] => orange )
38. array_flip()
交换数组中的键和值。
$array1 = array('name' => 'Tom', 'age' => 20);
$result = array_flip($array1);
print_r($result); // 输出:Array ( [Tom] => name [20] => age )
39. array_key_exists()
检查数组中是否存在指定的键名。
$array1 = array('name' => 'Tom', 'age' => 20);
if (array_key_exists('name', $array1)) {
echo '存在键名name';
} else {
echo '不存在键名name';
}
// 输出:存在键名name
40. array_values()
返回数组中所有的值,不包括键名。
$array1 = array('name' => 'Tom', 'age' => 20);
$result = array_values($array1);
print_r($result); // 输出:Array ( [0] => Tom [1] => 20 )
五、数组函数使用例子41-40
41. in_array()
检查数组中是否存在某个值。
$array1 = array('apple', 'banana', 'orange');
if (in_array('banana', $array1)) {
echo '存在值banana';
} else {
echo '不存在值banana';
}
// 输出:存在值banana
42. array_search()
搜索数组中指定的值并返回其键名。
$array1 = array('name' => 'Tom', 'age' => 20);
$key = array_search('Tom', $array1);
echo $key; // 输出:name
43. array_reverse()
将数组顺序翻转。
$array1 = array('apple', 'banana', 'orange');
$result = array_reverse($array1);
print_r($result); // 输出:Array ( [0] => orange [1] => banana [2] => apple )
44. array_slice()
从数组中取出一段。
$array1 = array('apple', 'banana', 'orange', 'pear', 'grape');
$result = array_slice($array1, 1, 3);
print_r($result); // 输出:Array ( [0] => banana [1] => orange [2] => pear )
45. array_splice()
在数组中插入或删除元素。
$array1 = array('apple', 'banana', 'orange', 'pear', 'grape');
array_splice($array1, 2, 2, 'melon');
print_r($array1); // 输出:Array ( [0] => apple [1] => banana [2] => melon [3] => grape )
46. array_unique()
删除数组中的重复值。
$array1 = array('apple', 'banana', 'orange', 'banana', 'grape');
$result = array_unique($array1);
print_r($result); // 输出:Array ( [0] => apple [1] => banana [2] => orange [4] => grape )
47. count()
返回数组中所有元素的个数。
$array1 = array('apple', 'banana', 'orange');
$count = count($array1);
echo $count; // 输出:3
48. current()
返回数组中当前指针指向的元素的值。
$array1 = array('apple', 'banana', 'orange');
echo current($array1); // 输出:apple
49. end()
将数组指针指向最后一个元素,并返回该元素的值。
$array1 = array('apple', 'banana', 'orange');
echo end($array1); // 输出:orange
50. next()
将数组指针向后移动一位,并返回该元素的值。
$array1 = array('apple', 'banana', 'orange');
echo next($array1); // 输出:banana
六、数组函数使用例子51-60
51. prev()
将数组指针向前移动一位,并返回该元素的值。
$array1 = array('apple', 'banana', 'orange');
end($array1);
echo prev($array1); // 输出:banana
52. reset()
将数组指针指向第一个元素,并返回该元素的值。
$array1 = array('apple', 'banana', 'orange');
echo reset($array1); // 输出:apple
53. sort()
对数组进行升序排序。
$array1 = array('orange', 'banana', 'apple');
sort($array1);
print_r($array1); // 输出:Array ( [0] => apple [1] => banana [2] => orange )
54. rsort()
对数组进行降序排序。
$array1 = array('orange', 'banana', 'apple');
rsort($array1);
print_r($array1); // 输出:Array ( [0] => orange [1] => banana [2] => apple )
55. ksort()
按照键名对数组进行升序排序。
$array1 = array('name' => 'Tom', 'age' => 20, 'country' => 'China');
ksort($array1);
print_r($array1); // 输出:Array ( [age] => 20 [country] => China [name] => Tom )
56. arsort()
按照键值对数组进行降序排序。
$array1 = array('name' => 'Tom', 'age' => 20, 'country' => 'China');
arsort($array1);
print_r($array1); // 输出:Array ( [name] => Tom [country] => China [age] => 20 )
57. shuffle()
随机打乱数组中元素的顺序。
$array1 = array('apple', 'banana', 'orange');
shuffle($array1);
print_r($array1); // 输出:随机打乱后的数组
58. array_rand()
从数组中随机取出一个或多个键名。
$array1 = array('apple', 'banana', 'orange', 'pear', 'grape');
$key = array_rand($array1);
echo $array1[$key]; // 输出:数组中随机取出一个元素的值
总结
以上就是关于本篇文章介绍的内容,常见的50多个高频数组函数使用总结,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。