PHP 数组完全指南:创建、遍历、排序与常用函数

橘子海
橘子海
发布时间:2026-10-13 | 5人浏览过
原创

详细解析 PHP 数组的创建、遍历、排序与常用操作函数,提供从基础语法到高级应用的代码示例与最佳实践,帮助开发者高效处理数据集合。

PHP 数组的核心概念

在 PHP 中,数组本质上是一个有序的映射(Map),它将键(Key)与值(Value)关联起来。键可以是整数或字符串,而值可以是任意数据类型。理解数组的关键在于掌握“键”与“值”的关系,以及如何通过内部指针来遍历和操作这些数据。

如何创建数组

PHP 提供了灵活的方式定义数组,支持自动索引和自定义键名。

第 1 步:使用 array() 构造函数初始化

这是最传统的创建方式。当未指定键名时,系统会自动生成从 0 开始的整数索引。

<?php
// 创建包含三个元素的数值索引数组
$userNames = array('张三', '李四', '王五');

// 打印整个数组结构
print_r($userNames);
/* 输出:
Array (
    [0] => 张三
    [1] => 李四
    [2] => 王五
)
*/
?>

第 2 步:使用范围函数 range()

range() 可以快速生成包含特定范围单元的数组,适用于数字序列或字母序列。

<?php
// 生成数字 1-4 的数组
$numbers = range(1, 4);
// 生成字母 a-e 的数组
$letters = range('a', 'e');
print_r($letters); // Array ( [0] => a [1] => b ... [4] => e )
?>

第 3 步:使用短数组语法 []

自 PHP 5.4 起,推荐使用方括号 [] 代替 array(),语法更简洁。同样,也可以动态添加新元素并自动生成键名(从最大现有数字索引 +1 开始)。

<?php
$userNames[] = '赵七';
// 此时 $userNames[3] 会被赋值为 '赵七'
?>

第 4 步:定义自定义键名(关联数组)

使用 => 符号将字符串或其他类型作为键,构建更具语义化的数据结构。

<?php
// 混合使用显式键名和隐式键名
// 注意:未指定键名的元素会从上一个最大数字索引继续递增,但此处全部为字符串键
$products = array(
    'baidu'   => '搜索服务',
    'taobao'  => '电商平台',
    '360'     => '安全软件'
);

// 单个赋值也可创建
$userAge['chaoyv'] = 25;
$userAge['yike']   = 30;
?>

如何遍历数组

根据数组的键类型不同,应选择不同的遍历策略。

第 1 步:使用 for 循环(仅限数值索引)

如果数组键是连续的整数且从 0 开始,可以使用 for 循环。此方法需要配合 count() 获取长度。

<?php
$userNames = ['张三', '李四', '王五'];
for ($i = 0; $i < count($userNames); $i++) {
    echo ($i + 1) . '-->' . $userNames[$i] . '<br />';
}
?>

第 2 步:使用 foreach 循环(推荐)

foreach 是唯一能优雅处理关联数组(非连续或非数字键)的方法。它自动处理键值对,无需关心索引边界。

<?php
// 仅取值
foreach ($userNames as $value) {
    echo $value . '<br />';
}

// 同时获取键和值
if (is_array($userNames)) {
    foreach ($userNames as $key => $value) {
        echo $key . '-->' . $value . '<br />';
    }
}
?>

数组的高级操作函数

第 1 步:排序操作(sort, rsort, asort, ksort)

PHP 提供了一系列排序函数,区别在于是否保留索引关系及排序方向:

  • sort():升序排序,重置键名为数字索引。
  • rsort():降序排序,重置键名为数字索引。
  • asort():按值升序排序,保持键名与值的对应关系。
  • ksort():按键名升序排序,保持键名与值的对应关系。
<?php
$fruit = ['orange', 'apple', 'banana'];
sort($fruit); // 重新索引: [0]=apple, [1]=banana...

$assoc = ['b'=>'ban', 'a'=>'app'];
asort($assoc); // 按键值内容排序,键仍保留
?>

第 2 步:去重与反转(unique, flip, reverse)

  • array_unique():移除数组中重复的值,返回新数组。
  • array_flip():交换键名和键值。若原值中有重复项,后面的会覆盖前面的键。
  • array_reverse():按相反顺序返回一个新数组。

第 3 步:增删元素(push, pop, shift, unshift)

这些函数直接修改原数组:

  • array_push():在末尾追加一个或多个单元。
  • array_pop():弹出并返回数组最后一个单元。
  • array_unshift():在开头插入一个或多个单元(索引会重新编号)。
  • array_shift():弹出并返回数组第一个单元。

第 4 步:数组指针操作(current, next, reset, each)

每个数组都有一个内部指针指向当前单元。这在旧版本 PHP 中常用于遍历,但现在通常用 foreach 替代。

  • reset():将指针复位到第一个元素。
  • each():返回当前指针位置的键值对,并将指针前移一步。该函数在 PHP 7.2+ 已被废弃。
<?php
$username = ['世'=>'何开', '血'=>'赵血儿'];
// 现代做法建议直接使用 foreach,避免依赖指针状态的复杂性
?>

第 5 步:其他实用函数

  • array_count_values():统计数组中所有值出现的次数。
  • extract():将数组中的键转换为变量名,值转为变量值。例如 $fruits['a']='apple' 会变成变量 $a 存储 'apple'。使用需谨慎,防止变量覆盖漏洞。
  • array_rand():随机返回一个或一组键。

多维数组的处理

数组中可以嵌套数组。处理多维数组时,通常结合 foreach 或递归逻辑。对于固定层级的二维数组(如表格数据),也可以使用双重 for 循环:

<?php
$products = [
    ['name'=>'苹果', 'price'=>10],
    ['name'=>'香蕉', 'price'=>5]
];
foreach ($products as $item) {
    foreach ($item as $key => $value) {
        echo "$key: $value | ";
    }
    echo '<br/>';
}
?>

总结

掌握 PHP 数组是开发 Web 应用的基础。建议使用 foreach 进行遍历以兼容各种键类型,利用内置排序和过滤函数简化逻辑,并注意在处理敏感数据时使用 extract 等函数时的安全性。以上就是 PHP 数组完全指南的详细内容,更多关于 PHP 数组编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表