<?php练功房

第 2 章 · 流程控制与数组 · 第 2.4 课

常用数组函数

约 15 分钟

PHP 自带了几十个数组函数,很多循环其实一行就能写完。先认识最常用的一批:

函数作用
sort / rsort升序 / 降序排序(直接修改原数组)
in_array($x, $arr)数组里有没有这个值
array_search($x, $arr)找到值对应的键
array_sum / max / min求和 / 最大 / 最小
implode($sep, $arr)用分隔符把数组拼成字符串
explode($sep, $str)按分隔符把字符串拆成数组
array_keys / array_values取所有键 / 所有值
array_merge合并数组
array_slice($arr, $start, $len)截取一段
range(1, 5)生成 [1, 2, 3, 4, 5]

array_map 和 array_filter

  • array_map(函数, 数组):对每个元素做同样的处理,返回新数组。
  • array_filter(数组, 函数):只保留函数返回 true 的元素。

下面的 fn($p) => $p + 10 是“箭头函数”,意思是“输入 $p,返回 $p + 10”,第三章会细讲。

按自定义规则排序

usort 接收一个比较函数,配合 <=> 可以按任意字段排序。array_column 能从一组记录里抽出某一列。

选择题

执行 sort($arr); 之后,排好序的数组在哪里?

练习 1

水果名大写

把逗号分隔的字符串 $csv 拆开,每个单词转成大写,再用 | 连起来:

APPLE | BANANA | CHERRY

练习 2

偶数的平方和

从 $nums 里筛出偶数,求它们的平方和。[3, 8, 12, 5, 20, 7] 中偶数是 8、12、20,平方和是 64 + 144 + 400:

608

试着不用 for / foreach,只用数组函数完成。