1. 概念
1.1. 数组是由键值对组成的集合
1.2. 键可以是整数或字符串,值可以是任意类型
1.3. 根据键的类型,数组可以分为索引数组、关联数组、混合数组
- 索引数组:键是整数
- 关联数组:键是字符串
- 混合数组:键是整数、字符串
1.4. 当没有指定键时,如果数组中不存在整数键,则键为 0;如果数组中存在整数键,则键为最大整数键加 1,但必须大于等于 0
1.5. 同一数组的值可以是不同类型
2. 创建数组
$数组名 = array(
键1 => 值1,
键2 => 值2,
……
)
$数组名 = [
键1 => 值1,
键2 => 值2,
……
]
$数组名 = array(值1, 值2, ……)
$数组名 = [值1, 值2, ……]
3. 访问数组
3.1. 直接访问数组
$数组名[键]
$数组名{键}
3.2. for 循环访问数组
for ($key = 0; $key < $length; $key ++)
{
$数组名[$key]
}
3.3. foreach 循环访问数组
foreach (数组名 as $value)
{
$value
}
foreach (数组名 as $key => $value)
{
$key
$value
}
4. 打印数组
print_r(数组)
5. 数组处理函数
5.1. 计算数组的元素数量
元素数量 = count(数组[, 递归计数])
- 递归计数:
- 0:不递归计数(默认)
- 1:递归计数
5.2. 排序数组
- 数组排序函数直接作用于数组本身
5.2.1. 对数组的值进行打乱(不保持键值的关联)
shuffle(&数组)
5.2.2. 对数组的键进行升序排序(保持键值的关联)
ksort(&数组[, 类型])
- 类型:
- SORT_REGULAR:普通(默认)
- SORT_NUMERIC:数字
- SORT_STRING:字母
- SORT_LOCALE_STRING:本地字母
- SORT_NATURAL:自然,即数字和字母
- SORT_FLAG_CASE:不区分大小写,通过 | 和 SORT_STRING、SORT_NATURAL 组合
5.2.3. 对数组的键进行降序排序(保持键值的关联)
krsort(&数组[, 类型])
5.2.4. 对数组的值进行升序排序(保持键值的关联)
asort(&数组[, 类型])
5.2.5. 对数组的值进行降序排序(保持键值的关联)
arsort(&数组[, 类型])
5.2.6. 对数组的值进行升序排序(不保持键值的关联)
sort(&数组[, 类型])
5.2.7. 对数组的值进行降序排序(不保持键值的关联)
rsort(&数组[, 类型])
5.2.8. 对数组的值进行自然升序排序(保持键值的关联,区分大小写)
natsort(&数组)
5.2.9. 对数组的值进行自然升序排序(保持键值的关联,不区分大小写)
natcasesort(&数组)
5.2.10. 对多个数组的值进行排序(不保持整数键值的关联,保持字符串键值的关联)
array_multisort(&数组1[, 顺序1][, 类型1][, &数组2[, 顺序2][, 类型2], ...])
- 顺序:
- SORT_ASC:升序(默认)
- SORT_DESC:降序
- 顺序、类型 可以互换
- 数组 的长度必须相等
- 规则:
- 数组1 按照 顺序1、类型1 进行排序
- 数组2 按照 顺序1、类型1、顺序2、类型2 进行排序
- 以此类推
5.2.11. 使用比较函数对数组的键进行排序(保持键值的关联)
uksort(&数组, 比较函数)
- 比较函数:function (值1, 值2) {……},当 值1 小于、等于、大于 值2 时,相应地返回一个小于、等于、大于 0 的整数
5.2.12. 使用比较函数对数组的值进行排序(保持键值的关联)
uasort(&数组, 比较函数)
5.2.13. 使用比较函数对数组的值进行排序(不保持键值的关联)
usort(&数组, 比较函数)
5.3. 合成和分解数组
5.3.1. 合成数组,即创建以变量名为键、以变量值为值的数组
数组 = compact(变量名1, 变量名2, …)
5.3.2. 分解数组,即创建以数组的键为名、以数组的值为值的变量
变量数量 = extract(数组)
- 数组:必须是关联数组