uasort()

1. 定义

该函数与usort()类似,使用用户自定义的函数对数组元素进行排序处理。但该函数会保留数组的键名,而不是重新赋予数字索引。 成功时返回TRUE,失败则返回FALSE。

2. 语法

uasort ( array &$array , callable $value_compare_func ) : bool

3. 参数说明

参数 可选性 数据类型 描述
$array 必需 数组 待排序的数组
$value_compare_func 必需 可回调类型 用户自定义的比较函数,函数原型:callback ( mixed $a, mixed $b ) : int

其中,$value_compare_func参数必须在比较两个参数后,相应地返回一个小于零(第一个参数小于第二个参数时)、大于零(第一个参数大于第二个参数时)或者等于零(两个参数相等时)的整数。

4. 示例

<?php

// uasort()
// 使用用户自定义的函数对数组元素进行排序处理。但该函数会保留数组的键名,而不是重新赋予数字索引

$arr = [
    'one'=>['id' => 32, 'name' => 'Linn', 'age' => 23, 'gender' => 1, 'profile' => '我是Linn,今年23岁'],
    'two'=>['id' => 35, 'name' => 'Alex', 'age' => 18, 'gender' => 0, 'profile' => '我是Alex,今年18岁'],
    'three'=>['id' => 38, 'name' => 'Bob', 'age' => 20, 'gender' => 0, 'profile' => '我是Bob,今年20岁'],
    'four'=>['id' => 42, 'name' => 'Angle', 'age' => 24, 'gender' => 1, 'profile' => '我是Angle,今年24岁'],
];
function age_sort($a, $b) {
    // 按照多维数组中的 age 键值对进行升序比较
    if($a['age'] >= $b['age']) {
        return 1;
    } else {
        return -1;
    }
}
uasort($arr, 'age_sort');
var_dump($arr);// 保留原数组键名
/* 输出:
array(4) {
  ["two"]=>
  array(5) {
    ["id"]=>
    int(35)
    ["name"]=>
    string(4) "Alex"
    ["age"]=>
    int(18)
    ["gender"]=>
    int(0)
    ["profile"]=>
    string(24) "我是Alex,今年18岁"
  }
  ["three"]=>
  array(5) {
    ["id"]=>
    int(38)
    ["name"]=>
    string(3) "Bob"
    ["age"]=>
    int(20)
    ["gender"]=>
    int(0)
    ["profile"]=>
    string(23) "我是Bob,今年20岁"
  }
  ["one"]=>
  array(5) {
    ["id"]=>
    int(32)
    ["name"]=>
    string(4) "Linn"
    ["age"]=>
    int(23)
    ["gender"]=>
    int(1)
    ["profile"]=>
    string(24) "我是Linn,今年23岁"
  }
  ["four"]=>
  array(5) {
    ["id"]=>
    int(42)
    ["name"]=>
    string(5) "Angle"
    ["age"]=>
    int(24)
    ["gender"]=>
    int(1)
    ["profile"]=>
    string(25) "我是Angle,今年24岁"
  }
}
*/

5. 延展阅读

  • usort():使用用户自定义的比较方法对数组元素进行排序