一、概述
在PHP中,array_values()函数是一个非常实用的数组函数,它可以返回一个数组中所有的值,并重新索引。这个函数可以用于删除数组中的键名,只保留数字索引,也可以用于取出自定义键名数组中的值。使用该函数可以生成一个新的数组,新数组的键名将从0开始,依次递增。如果原始数组中有重复的值,它们也将在新数组中出现。
$array = array("name" => "Tom", "age" => 26, "address" => "New York");
print_r(array_values($array));
输出结果为:
Array
(
[0] => Tom
[1] => 26
[2] => New York
)
二、应用场景
该函数非常适用于需要将数组中的键名重新索引的场景。下面以一个对带有自定义键名的数组进行循环的案例来说明该函数的使用。
$array = array("name" => "Tom", "age" => 26, "address" => "New York");
$values = array_values($array);
foreach ($values as $value) {
echo $value . "\n";
}
输出结果为:
Tom
26
New York
三、示例分析
array_values()函数可以将带有自定义键名的数组转换为带有数字键名的数组。下面给出一个示例,展示如何将一个包含学生成绩的关联数组转换为一个二维数组。
$students = array(
"Tom" => array("math" => 90, "English" => 80, "Chinese" => 95),
"Lucy" => array("math" => 85, "English" => 92, "Chinese" => 96),
"Lily" => array("math" => 92, "English" => 88, "Chinese" => 93)
);
$scores = array_map("array_values", $students);
print_r($scores);
输出结果为:
Array
(
[0] => Array
(
[0] => 90
[1] => 80
[2] => 95
)
[1] => Array
(
[0] => 85
[1] => 92
[2] => 96
)
[2] => Array
(
[0] => 92
[1] => 88
[2] => 93
)
)
上面的代码中,$students数组包含了三个键名为学生姓名,值为学生各个科目成绩的子数组。使用array_map()函数,对$students数组中每个子数组内部执行array_values()函数操作,将数组中的值取出来,再将最终的结果转换为一个二维数组。
四、高级用法
在开发过程中,我们有时候需要将多个关联数组合并为一个数组,并需要对最终生成的数组进行排序。这个时候可以结合使用array_values()函数和usort()函数来完成。
$array1 = array("name" => "Tom", "age" => 26, "address" => "New York");
$array2 = array("name" => "Jack", "age" => 28, "address" => "Chicago");
$array3 = array("name" => "Lucy", "age" => 24, "address" => "San Francisco");
$array = array_merge(array_values($array1), array_values($array2), array_values($array3));
usort($array, function($a, $b) {
return $a > $b;
});
print_r($array);
输出结果为:
Array
(
[0] => 24
[1] => 26
[2] => 28
[3] => Chicago
[4] => Lucy
[5] => New York
[6] => Tom
)
上面的代码中,首先将三个带有自定义键名的数组使用array_values()函数转换为带有数字索引的数组,再将这三个数组使用array_merge()函数合并为一个数组,最后使用usort()函数按照升序排列。
五、小结
array_values()函数是一个非常实用的数组函数,它可以将数组中所有的值取出来,并重新索引。虽然这个函数看上去很简单,但是在实际开发中,它有着很广泛的应用场景,可以结合使用其他函数进行数组操作,非常方便实用。希望本文的介绍能对大家进行一定的启发。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/154830.html
微信扫一扫
支付宝扫一扫