当前位置: 首页> 最新文章列表> 使用 array_values 清理数组中的非连续键

使用 array_values 清理数组中的非连续键

gitbox 2025-05-28

什么是数组键不连续?

假设我们有一个数组:

$array = [
    0 => '苹果',
    1 => '香蕉',
    3 => '橘子',
    5 => '葡萄'
];

可以看到,数组的键为0、1、3、5,中间出现了断开的情况。如果我们遍历这个数组,虽然值是正常的,但如果依赖键值,可能会产生意想不到的结果。


array_values函数的作用

array_values函数的作用是返回数组中所有的值,并且会重新索引这些值,键名将从0开始依次递增,确保数组的键是连续的数字。

语法示例:

array_values(array $array): array

返回值是一个新数组,包含原数组的所有值,但键名重新索引。


使用示例

针对上面的不连续键数组,我们用array_values来处理:

<?php

$array = [
    0 => '苹果',
    1 => '香蕉',
    3 => '橘子',
    5 => '葡萄'
];

$cleanArray = array_values($array);

print_r($cleanArray);

输出结果:

Array
(
    [0] => 苹果
    [1] => 香蕉
    [2] => 橘子
    [3] => 葡萄
)

通过array_values,我们成功将数组键变为连续的0、1、2、3。


什么时候需要使用array_values?

  • 当你通过某些操作删除了数组中间的元素,导致键名不连续。

  • 需要对数组进行索引遍历(如for循环),连续的数字键更加方便。

  • 将数组传递给需要连续数字键的函数或接口。

  • 需要清理用户输入或处理数据库查询返回的非连续数组。


结合实际项目中的应用

假如你通过接口或数据库查询返回了如下数组(例如json_decode得到的结果):

<?php

$apiResponse = [
    2 => 'Tom',
    4 => 'Jerry',
    7 => 'Spike'
];

你需要将其变成可直接循环处理的数组:

$cleaned = array_values($apiResponse);

foreach ($cleaned as $key => $name) {
    echo "编号 {$key},姓名:{$name}" . PHP_EOL;
}

输出:

编号 0,姓名:Tom
编号 1,姓名:Jerry
编号 2,姓名:Spike

小结

  • array_values是PHP中重建数组索引的简单有效方法。

  • 适用于键名不连续或被删除后需要重置索引的数组。

  • 对数组进行重新索引后,可以避免很多遍历和逻辑判断上的复杂性。


想了解更多PHP技巧,欢迎访问:

<a href="https://gitbox.net/php-array-functions">PHP数组函数大全</a>