插件窝 干货文章 PHP怎么实现数组相邻元素求差

PHP怎么实现数组相邻元素求差

array diffArray 使用 相邻 986    来源:    2025-03-19

在PHP中,你可以使用循环或内置函数来实现数组相邻元素的求差。以下是两种常见的方法:

方法1:使用循环

你可以使用 for 循环来遍历数组,并计算相邻元素的差值。

<?php
$array = [10, 20, 30, 40, 50];
$diffArray = [];

for ($i = 1; $i < count($array); $i++) {
    $diffArray[] = $array[$i] - $array[$i - 1];
}

print_r($diffArray);
?>

输出:

Array
(
    [0] => 10
    [1] => 10
    [2] => 10
    [3] => 10
)

方法2:使用 array_maparray_slice

你也可以使用 array_maparray_slice 来实现相邻元素的求差。

<?php
$array = [10, 20, 30, 40, 50];

$diffArray = array_map(function($a, $b) {
    return $b - $a;
}, array_slice($array, 0, -1), array_slice($array, 1));

print_r($diffArray);
?>

输出:

Array
(
    [0] => 10
    [1] => 10
    [2] => 10
    [3] => 10
)

方法3:使用 array_walk

你还可以使用 array_walk 来实现相邻元素的求差。

<?php
$array = [10, 20, 30, 40, 50];
$diffArray = [];

array_walk($array, function($value, $key) use (&$diffArray, $array) {
    if ($key > 0) {
        $diffArray[] = $value - $array[$key - 1];
    }
});

print_r($diffArray);
?>

输出:

Array
(
    [0] => 10
    [1] => 10
    [2] => 10
    [3] => 10
)

总结

以上三种方法都可以实现数组相邻元素的求差。选择哪种方法取决于你的具体需求和代码风格。如果你需要更简洁的代码,可以使用 array_maparray_slice 的组合;如果你更喜欢传统的循环方式,可以使用 for 循环。