数组的排序, 数组的合并, 数组成员的统计, 数组的交差并补等,任意选一个专题,至少10个函数,写出演示案例数组的排序, 数组的合并, 数组成员的统计, 数组的交差并补等,任意选一个专题,至少10个函数,写出演示案例
数组函数允许您访问和操作数组。
支持单维和多维数组。
数组函数属于 PHP 核心部分。无需安装即可使用这些函数。
定义和用法
array() 函数用于创建数组。
在 PHP 中,有三种类型的数组:
索引数组 - 带有数字索引的数组
关联数组 - 带有指定的键的数组
多维数组 - 包含一个或多个数组的数组
说明
array() 创建数组,带有键和值。如果在规定数组时省略了键,则生成一个整数键,这个 key 从 0 开始,然后以 1 进行递增。
要用 array() 创建一个关联数组,可使用 => 来分隔键和值。
要创建一个空数组,则不传递参数给 array():
$new = array();
索引数组的语法:
array(name,age,mail,salary);
关联数组的语法:
array(key=>name,key=>age,key=>mail,key=>salary);
二、数组函数的排序
函数名称 | 排序依据 | 数组索引键保持 | 排序的顺序 |
---|---|---|---|
array_multisort() | 值 | 键值关联的保持,数字类型的不保持 | 第一个数组或者由选项指定 |
asort() | 值 | 是 | 由低到高 |
arsort() | 值 | 是 | 由高到低 |
krsort() | 值 | 是 | 由高到低 |
ksort() | 值 | 是 | 由低到高 |
natcasesort() | 值 | 是 | 自然排序,大小写不敏感 |
natsort() | 值 | 是 | 自然排序 |
rsort() | 值 | 否 | 由高到低 |
shuffle() | 值 | 否 | 随机 |
sort() | 值 | 否 | 由低到高 |
uasort() | 值 | 是 | 由用户定义 |
uksort() | 键 | 是 | 由用户定义 |
usort() | 值 | 否 | 由用户定义 |
2.1!数组函数sort()
<?php
//sort数字由低到高
$arr_urse=[78,110,31,9,35,88];
sort($arr_urse);
print_r($arr_urse);
图示:
2.2数组函数rsort()
<?php
//rsort()值由高到低
$arr_urse=[78,110,31,9,35,88];
rsort($arr_urse);
print_r($arr_urse);
图示:
2.3array_multisort — 对多个数组或多维数组进行排序
关联(string)键名保持不变,但数字键名会被重新索引
参数:
array1
要排序的 array。
array1_sort_order
之前 array 参数要排列的顺序。 SORT_ASC 按照上升顺序排序, SORT_DESC 按照下降顺序排序。
此参数可以和 array1_sort_flags 互换,也可以完全删除,默认是 SORT_ASC 。
array1_sort_flags
为 array 参数设定选项:
排序类型标志:
SORT_REGULAR - 将项目按照通常方法比较(不修改类型)
SORT_NUMERIC - 按照数字大小比较
SORT_STRING - 按照字符串比较
SORT_LOCALE_STRING - 根据当前的本地化设置,按照字符串比较。 它会使用 locale 信息,可以通过 setlocale() 修改此信息。
SORT_NATURAL - 以字符串的”自然排序”,类似 natsort()
array_multisort()多个数组排序实例:
<?php
//array_multisort()多个数组排序
$urse1 = array(10, 100, 100, 36);
$urse2 = array(12, 36, 29, 70);
$urse3 = array(19, 32, 28, 86);
$urse4 = array(12, 34, 29, 36);
array_multisort($urse1, $urse2,$urse3, $urse4);
var_dump($urse1);
var_dump($urse2);
var_dump($urse3);
var_dump($urse4);
?>
图示:
这个例子里,排序后,第一个数组、第二个数组、第三个数组、第四个数组对应的值排序都发生了变化
array_multisort()多维数组排序实例:
<?php
//array_multisort()多维数组
$arr = array(
array("155", 110, 258, 896, "a"),
array(17, 258, "2", 33, 10)
);
array_multisort($arr[0], SORT_ASC, SORT_STRING,
$arr[1], SORT_NUMERIC, SORT_DESC);
var_dump($arr);
?>
图示:
本例中在排序后,第一个数组将变成 “155”,110,258,896,”a”(被当作字符串以升序排列)。第二个数组将包含 17, 258, “2”, 33, 10(被当作数字以降序排列)。
2.4uasort()用户自定义的比较函数
使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
主要用于对那些单元顺序很重要的结合数组进行排序
如果两个成员完全相同,那么它们在排序数组中的相对顺序是未定义的
常用参数:array value_compare_func
成功时返回 true, 或者在失败时返回 false
<?php
function urse($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' =
print_r($array);
uasort($array, 'urse');
print_r($array);
?>
图示:
三、数组的合并
3.1array_merge() 函数
array_merge() 函数把一个或多个数组合并为一个数组。
可以向函数输入一个或者多个数组。
如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素。
如果您仅向 array_merge() 函数输入一个数组,且键名是整数,则该函数将返回带有整数键名的新数组,其键名以 0 开始进行重新索引(参见下面的实例 1)。
该函数与 array_merge_recursive() 函数之间的不同是在处理两个或更多个数组元素有相同的键名的情况。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组。
语法:
array_merge(array1,array2,array3...)
将两个关联数组合并为一个数组实例:
<?php
$user1=array("a"=>"red","b"=>"green");
$user2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge($user1,$user2));
?>
图示:
仅使用一个带有整数键名的数组参数:
<?php
//仅使用一个带有整数键名的数组参数
$a=array(10=>"red",20=>"green");
print_r(array_merge($a));
?>
图示: