php数组操作需依场景选用函数:创建用[]、range等;判断用in_array、array_key_exists等;遍历用foreach、array_map等;增删用array_push、unset等;合并用array_merge、+等;排序用sort、usort等;去重用array_unique。

PHP数组操作涉及大量函数,初学者常因语义相近、行为差异细微而混淆。以下是针对常见操作场景的多种高效实现方式,覆盖创建、查询、遍历、增删、合并、排序与去重等核心需求。
一、快速创建结构化数组
避免手动逐项赋值,使用内置函数一次性生成标准格式数组,提升可读性与执行效率。
1、使用 [] 语法 直接初始化:$arr = ['a', 'b', 'c']; 或 $assoc = ['name' => 'Tom', 'age' => 25];
2、调用 range() 生成等差序列:range(1, 5) 返回 [1,2,3,4,5];range('a', 'd') 返回 ['a','b','c','d'];range(0, 10, 2) 返回 [0,2,4,6,8,10]。
3、使用 array_fill(0, 4, 'N/A') 初始化固定值数组:返回 [0=>'N/A', 1=>'N/A', 2=>'N/A', 3=>'N/A']。
4、通过 array_combine(['id','name'], [101,'Alice']) 将两个等长一维数组合成关联数组:返回 ['id'=>101, 'name'=>'Alice']。
二、精准判断元素或键是否存在
避免因类型隐式转换或 null 值导致误判,应根据检测目标选择语义明确的函数。
1、检查值是否存在且需严格类型匹配时,使用 in_array($val, $arr, true)。
2、确认某个键名是否存在于数组中(包括其值为 null 的情况),使用 array_key_exists($key, $arr)。
3、验证键存在且值不为 null、0、false 或空字符串,使用 isset($arr[$key])。
4、判断整个数组是否为空(长度为 0),使用 empty($arr);注意该函数对 [0 => ''] 也返回 true。
三、安全遍历与批量处理元素
防止未定义索引错误,同时支持原地修改或生成新数组,兼顾性能与逻辑清晰性。
1、通用遍历推荐 foreach ($arr as $key => $value),可同时获取键与值,不改变内部指针。
2、对每个元素应用统一变换并生成新数组,使用 array_map('trim', $strings) 或匿名函数 array_map(fn($v) => $v * 2, $nums)。
3、筛选满足条件的元素并保留原始键名,使用 array_filter($arr, fn($v) => $v > 0)。
4、原地修改数组(引用传递),例如为每项添加时间戳,使用 array_walk($arr, function(&$v) { $v['ts'] = time(); })。
四、灵活增删数组元素
根据插入/删除位置和是否需要返回值,选用语义最贴合的函数,避免副作用。
1、在数组末尾追加一个或多个元素,使用 array_push($arr, 'x', 'y') 或更轻量的 $arr[] = 'x'。
2、在数组开头插入一个或多个元素,使用 array_unshift($arr, 'first')。
3、移除并返回最后一个元素,使用 array_pop($arr)。
4、移除并返回第一个元素,使用 array_shift($arr)。
5、按指定键名删除元素(不重排索引),使用 unset($arr['key']);若需重排数字索引,后续调用 array_values($arr)。
五、合并、拆分与提取子集
区分不同合并策略与键名处理逻辑,避免意外覆盖或索引错乱。
1、合并多个数组,字符串键后者覆盖前者、数字键重排,使用 array_merge($a, $b, $c)。
2、合并时不覆盖字符串键、不重排数字索引,使用 $a + $b 运算符。
3、递归合并相同键名的值为数组,使用 array_merge_recursive($a, $b)。
4、从二维数组中提取指定列,如取所有 'email' 字段,使用 array_column($users, 'email');支持自定义索引键:array_column($users, 'name', 'id')。
5、截取数组片段,从索引 2 开始取 3 个元素,使用 array_slice($arr, 2, 3);保留原始键名时传入第四个参数 true。
六、按需排序与去重
依据业务要求选择排序维度(键/值)、方向(升/降)及是否保持键关联,确保结果符合预期。
1、对索引数组按值升序排序并重置数字键,使用 sort($arr)。
2、对关联数组按值升序排序并保留键名,使用 asort($arr)。
3、对关联数组按键名升序排序,使用 ksort($arr)。
4、自定义比较逻辑排序,如按字符串长度,使用 usort($arr, fn($a, $b) => strlen($a) - strlen($b))。
5、移除重复值并保留首次出现的键值对,使用 array_unique($arr);对多维数组需先序列化再处理。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











