PHP 数组:从基础到实战的全面总结
数组是 PHP 中最灵活、最常用的数据结构之一,无论是存储简单列表、复杂关联数据,还是处理业务逻辑,它都能胜任。这篇文章会从数组的核心概念入手,梳理基础用法、进阶技巧和实战注意事项,帮你彻底搞懂 PHP 数组。
和其他语言(如 Java、Python)的数组不同,PHP 数组本质是 **“有序映射”**—— 既可以像 “索引数组” 按数字下标取值,也能像 “关联数组” 用字符串当键名,甚至两种形式可以混合存在。
举个直观的例子:
$user = [
'name' => '张三',
0 => '男',
'age' => 28,
1 => '程序员'
];
这种灵活性让 PHP 数组能轻松应对各种场景,比如存储表单数据、数据库查询结果等。
PHP 创建数组有两种常用语法,推荐用更简洁的 “短数组语法”(PHP 5.4 + 支持):
$fruit = ['苹果', '香蕉', '橙子'];
$student = ['id' => 101, 'name' => '李四'];
$color = array('red', 'green', 'blue');
$score = array('math' => 90, 'english' => 85);
通过 “键名” 访问数组元素,修改时直接赋值即可,不存在的键会自动新增:
$fruit = ['苹果', '香蕉', '橙子'];
echo $fruit[1];
$student = ['id' => 101, 'name' => '李四'];
echo $student['name'];
$student['name'] = '王五';
$student['grade'] = '高三';
print_r($student);
⚠️ 注意:索引数组的下标默认从 0 开始,若手动指定下标,后续未指定的下标会从 “最大指定下标 + 1” 继续:
$num = [1 => '一', '二', '三'];
echo $num[2];
PHP 提供了大量数组函数,不用重复造轮子。这里按 “常用场景” 分类,整理最实用的 10 个函数:
- foreach:最常用的遍历方式,支持索引和关联数组:
$score = ['math' => 90, 'english' => 85, 'chinese' => 95];
foreach ($score as $subject => $point) {
echo "{$subject}:{$point}分<br>";
}
- array_map:对数组每个元素执行函数(适合批量处理):
$add5 = function($v) { return $v + 5; };
$newScore = array_map($add5, $score);
print_r($newScore);
- array_filter:按条件筛选元素(保留返回 true 的元素):
$highScore = array_filter($score, function($v) {
return $v > 90;
});
print_r($highScore);
- in_array:判断元素是否在数组中(返回 bool):
echo in_array(85, $score) ? '存在' : '不存在';
- count:统计数组元素个数(len 的替代):
- array_merge:合并多个数组(关联键冲突时,后面的覆盖前面的):
$a = ['a' => 1, 'b' => 2];
$b = ['b' => 3, 'c' => 4];
$merge = array_merge($a, $b);
print_r($merge);
当索引数组和关联数组混合时,for
循环可能出错(for
只认数字下标),推荐用foreach
遍历:
$mix = ['name' => '张三', 0 => '男', 'age' => 28];
for ($i=0; $i<count($mix); $i++) {
echo $mix[$i];
}
foreach ($mix as $k => $v) {
echo "{$k}:{$v}<br>";
}
PHP 会自动转换数组键的类型,比如字符串键若能转成数字,会变成索引键:
$test = ['123' => '数字字符串', 123 => '纯数字'];
print_r($test);
如果数组元素超过 10 万,避免频繁使用array_merge
(会重新分配内存),推荐用$arr += $arr2
(关联键不覆盖,索引键保留原顺序):
$bigArr1 = range(1, 100000);
$bigArr2 = range(100001, 200000);
$bigArr = $bigArr1 + $bigArr2;
PHP 数组的灵活性是它的核心优势,但也需要注意细节:
- 理解 “有序映射” 本质,区分索引和关联数组的使用场景;
- 熟练掌握
foreach
、array_map
、array_filter
等常用函数,减少重复代码;
- 避开键类型转换、大数组性能等陷阱,保证代码稳定高效。
无论是日常开发中的表单处理,还是复杂业务中的数据存储,用好数组都能让你的 PHP 代码更简洁、更高效。
发布时间 : 2025-09-04,阅读量:34
本文链接:
https://upwqy.com/index.php/details/990.html