在 php 7.3 中计算数字数组相邻元素差值,需用 for 循环遍历至倒数第二个元素,以 $arr[$i+1] - $arr[$i] 计算差值,注意键对齐、负值保留及边界越界防护。

在 PHP 7.3 中,计算数字数组中相邻元素的差值,核心是遍历数组(从第 0 个到倒数第二个),用后一个减前一个,得到差值序列。注意键对齐、负值保留、边界处理即可。
基础实现:for 循环逐对计算
最直观的方式是用 for 遍历索引,确保不越界($i ):
$arr = [5, 2, 8, 1, 9]; $differences = []; for ($i = 0; $i
- 差值数组长度恒为原数组长度减 1
- 差值可正可负,直接反映增减趋势
- 适用于所有数值类型(int/float),无需类型强制转换
函数封装:支持自定义差值方向
封装成函数可提升复用性,并允许选择“后减前”或“前减后”:
function array_adjacent_diff($arr, $reverse = false) {
if (count($arr) 使用 array_map + array_slice 简洁写法
利用 PHP 数组函数组合,更函数式风格(适合熟悉高阶函数的开发者):
$arr = [10, 3, 6, 2];
$nexts = array_slice($arr, 1); // [3, 6, 2]
$currents = array_slice($arr, 0, -1); // [10, 3, 6]
$differences = array_map(function($a, $b) { return $b - $a; }, $currents, $nexts);
// 结果:[-7, 3, -4]- 需确保两个切片等长,
array_slice($arr, 0, -1)自动截断末尾 - PHP 7.3 支持匿名函数直接传入 array_map,无需额外变量
- 代码简洁但可读性略低,调试时不如循环直观
边界与异常情况处理
实际项目中需主动防御空数组、单元素、非数字值等场景:
- 空数组或仅 1 个元素 → 返回空数组,不报错
- 含非数字值(如
'abc')→ PHP 会静默转为 0,建议提前过滤:array_filter($arr, 'is_numeric') - 浮点数精度问题(如
0.1 + 0.2 !== 0.3)→ 差值本身也存在浮点误差,必要时用 round($diff, 10)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











