PHP 数组完全指南:创建、遍历、排序与常用函数
详细解析 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 数组编程的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













