在 php 中,当我们需要对数组进行排序时,可以使用 sort()、rsort() 等内置函数来对数组中的元素进行排序。但是,有时候我们需要根据数组中的两个字段来进行排序,这时就需要使用 usort() 函数了。
usort — 使用用户自定义的比较函数对数组中的值进行排序
语法:bool usort ( array &$array, callable $value_compare_func )
该函数使用指定的比较函数对数组中的值进行排序。需要注意的是,此函数直接影响原数组,它不返回排序后的数组。
使用场景
立即学习“PHP免费学习笔记(深入)”;
在处理一些复杂的应用时,有时候需要按照多个字段来排序,比如优先按照价格排序,价格一样时再按照销量排序,那么我们就需要使用 usort() 函数来实现。
示例代码
下面是一个实际的使用 usort() 函数排序数组的例子。假设我们有一个商品数组,包含商品的名称、价格、销量等信息,现在我们需要根据价格和销量来对商品进行排序。
$products = [
[
"name" => "商品A",
"price" => 100,
"sales" => 200
],
[
"name" => "商品B",
"price" => 120,
"sales" => 150
],
[
"name" => "商品C",
"price" => 80,
"sales" => 300
],
];
function cmp($a, $b) {
if ($a['price'] == $b['price']) {
return $a['sales'] < $b['sales'] ? 1 : -1;
}
return $a['price'] > $b['price'] ? 1 : -1;
}
usort($products, "cmp");
print_r($products);运行结果:
Array
(
[0] => Array
(
[name] => 商品C
[price] => 80
[sales] => 300
)
[1] => Array
(
[name] => 商品A
[price] => 100
[sales] => 200
)
[2] => Array
(
[name] => 商品B
[price] => 120
[sales] => 150
)
)这里我们定义了一个 cmp() 函数,该函数用于比较两个商品的价格和销量,并按照价格从小到大、销量从大到小的顺序排序。然后通过 usort() 函数对商品数组进行排序,并打印排序后的结果。
总结
使用 usort() 函数可以灵活地对数组进行排序,可以根据多个字段进行排序,实现更加复杂的应用需求。这里需要注意,排序函数要比较的是两个数组元素,因此 $a 和 $b 分别表示数组中的两个元素,函数需要返回正数、负数和 0 三个值中的一个,表示 $a 比 $b 大、小或相等。
以上就是php怎么根据数组中两个字段来排序的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号