PHP 数组

182 阅读3分钟

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(数组)
  • 数组:必须是关联数组