假设我们有一个数组:
$array = [
0 => '苹果',
1 => '香蕉',
3 => '橘子',
5 => '葡萄'
];
可以看到,数组的键为0、1、3、5,中间出现了断开的情况。如果我们遍历这个数组,虽然值是正常的,但如果依赖键值,可能会产生意想不到的结果。
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。
当你通过某些操作删除了数组中间的元素,导致键名不连续。
需要对数组进行索引遍历(如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>