# uksort

(PHP 4, PHP 5, PHP 7, PHP 8)

uksort — 使用用户自定义的比较函数对数组中的键名进行排序

### 说明

uksort(array `&$array`, callable `$callback`): true

使用用户自定义的比较函数对 `array` 本身进行按键（key）排序以确定顺序。

> 注意:

> 如果两个成员完全相同，那么它们将保持原来的顺序。 在 PHP 8.0.0 之前，它们在排序数组中的相对顺序是未定义的。

> 注意:

> 重置数组中的内部指针，指向第一个元素。

### 参数

`array`

  输入的数组。

`callback`

  在第一个参数小于，等于或大于第二个参数时，该比较函数必须相应地返回一个小于，等于或大于 0 的整数。

  callback(mixed `$a`, mixed `$b`): int
  警告

  从比较函数中返回非整数值，例如 float，将导致内部强制转换为 callback 返回值为 int。因此，诸如 `0.99` 和 `0.1` 之类的值都将被转换为整数值 `0`，将这些值比较的话将会是相等。

### 返回值

总是返回 `true`。

### 更新日志

版本 | 说明
--- | ---
8.2.0 | 现在返回类型为 `true`；之前是 bool。
8.0.0 | 如果 `callback` 接受引用传递参数，该方法将会抛出 `E_WARNING`。

### 示例

示例 #1 uksort() 示例

`<?php
function cmp($a, $b)
{
$a = preg_replace('@^(a|an|the) @', '', $a);
$b = preg_replace('@^(a|an|the) @', '', $b);
return strcasecmp($a, $b);
}
$a = array("John" => 1, "the Earth" => 2, "an apple" => 3, "a banana" => 4);
uksort($a, "cmp");
foreach ($a as $key => $value) {
echo "$key: $value\n";
}
?>`

以上示例会输出：

    an apple: 3
    a banana: 4
    the Earth: 2
    John: 1

### 参见

- usort() - 使用用户自定义的比较函数对数组中的值进行排序
- uasort() - 使用用户定义的比较函数对数组进行排序并保持索引关联
- 数组排序函数对比

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open