数组是 PHP 中最重要的数据结构,配置项、数据库查询结果、接口返回的数据,最终都以数组形式在代码里流转。这篇文章整理一组安全、常用的数组函数,每个都配一个可以直接运行的示例。
先认识:创建数组与 count()
<?php
$langs = ['PHP', 'Python', 'Go'];
echo count($langs); // 输出:3
print_r($langs); // Array ( [0] => PHP [1] => Python [2] => Go )
排序:sort()、asort() 与 ksort()
<?php
$nums = [3, 1, 4, 1, 5];
sort($nums); // 按值升序,键会被重置
print_r($nums); // [1, 1, 3, 4, 5]
$scores = ['php' => 90, 'python' => 95];
asort($scores); // 按值排序,保留键值关系
print_r($scores); // ['php' => 90, 'python' => 95]
ksort($scores); // 按键名排序
print_r($scores);
记忆方法:后缀决定排序依据,a 开头按值排且保留键,k 开头按键名排。
查找:in_array() 与 array_search()
<?php
$langs = ['PHP', 'Python', 'Go'];
if (in_array('PHP', $langs)) {
echo '找到 PHP';
}
$key = array_search('Go', $langs); // 返回键名,找不到返回 false
echo $key; // 输出:2
过滤:array_filter()
<?php
$nums = [1, 2, 3, 4, 5, 6];
$even = array_filter($nums, function ($n) {
return $n % 2 === 0;
});
print_r($even); // [1 => 2, 3 => 4, 5 => 6]
注意:array_filter() 会保留原来的键,需要重新索引时,再套一层 array_values()。
转换:array_map()
<?php
$prices = [10, 20, 30];
$withTax = array_map(function ($p) {
return $p * 1.1;
}, $prices);
print_r($withTax); // [11, 22, 33]
array_filter() 负责筛选,array_map() 负责逐个加工,两个函数配合使用非常顺手。
合并、去重与统计
<?php
$a = ['php', 'mysql'];
$b = ['linux', 'php'];
$all = array_merge($a, $b);
print_r($all); // ['php', 'mysql', 'linux', 'php']
print_r(array_unique($all)); // 去掉重复值
print_r(array_count_values($all)); // 统计每个值出现的次数
echo array_sum([1, 2, 3]); // 输出:6
键与值的单独操作
<?php
$user = ['name' => 'Sherry', 'city' => 'Hangzhou'];
print_r(array_keys($user)); // ['name', 'city']
print_r(array_values($user)); // ['Sherry', 'Hangzhou']
if (array_key_exists('city', $user)) {
echo '有城市信息';
}
echo $user['email'] ?? '未填写'; // 安全读取,避免 Undefined index
小结
- 排序三件套:
sort()按值重置键、asort()按值保留键、ksort()按键名排 - 筛选用
array_filter(),逐个加工用array_map() - 合并去重:
array_merge()+array_unique() - 读取数组时善用
array_key_exists()和??,程序更健壮
这些都是纯数据操作函数,不涉及任何系统调用,放心使用。下一篇我们聊聊如何安全地处理表单数据。
评论 0
还没有评论,来抢沙发吧~ 🛋