php怎么对关联数组排序
时间 : 2023-03-27 16:49:01声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,对关联数组(Associative Array)进行排序有多种方法。具体使用哪种方法取决于排序的要求和数组的大小。

以下是几种对关联数组进行排序的方法:

## 1. 使用 `asort()` 函数

`asort()` 函数可以按升序对关联数组进行排序,同时保留原有的数组元素关联。比如:

```php

$ages = array("Peter" => "35", "Ben" => "37", "Joe" => "43");

asort($ages);

print_r($ages);

输出结果为:

Array

(

[Peter] => 35

[Ben] => 37

[Joe] => 43

)

如果要按降序排序,则可以使用 `arsort()` 函数。

## 2. 使用 `uasort()` 函数

`uasort()` 函数允许自定义排序规则。比如,我们可以按照数组元素值的长度进行排序,代码如下:

```php

$fruits = array("apple" => "red", "banana" => "yellow", "pear" => "green");

uasort($fruits, function($a, $b) {

return strlen($a) - strlen($b);

});

print_r($fruits);

输出结果为:

Array

(

[pear] => green

[apple] => red

[banana] => yellow

)

## 3. 使用 `usort()` 函数

`usort()` 函数可以按照自定义的比较函数对数组进行排序。比如,我们可以根据元素值的大小进行排序,代码如下:

```php

$numbers = array(8, 5, 2, 4, 1, 9);

usort($numbers, function($a, $b) {

return $a - $b;

});

print_r($numbers);

输出结果为:

Array

(

[0] => 1

[1] => 2

[2] => 4

[3] => 5

[4] => 8

[5] => 9

)

## 4. 使用 `array_multisort()` 函数

`array_multisort()` 函数可以对多个数组进行排序,也可以对关联数组进行排序。比如,我们可以根据元素值的大小以及元素的首字母进行排序,代码如下:

```php

$fruits = array(

array("name" => "apple", "color" => "red", "weight" => 120),

array("name" => "banana", "color" => "yellow", "weight" => 100),

array("name" => "pear", "color" => "green", "weight" => 150)

);

// 根据重量升序排序,如果重量相同则根据名字首字母升序排序

foreach ($fruits as $key => $row) {

$weight[$key] = $row["weight"];

$name[$key] = $row["name"];

}

array_multisort($weight, SORT_ASC, $name, SORT_ASC, $fruits);

print_r($fruits);

输出结果为:

Array

(

[0] => Array

(

[name] => banana

[color] => yellow

[weight] => 100

)

[1] => Array

(

[name] => apple

[color] => red

[weight] => 120

)

[2] => Array

(

[name] => pear

[color] => green

[weight] => 150

)

)

综上所述,PHP 中对关联数组排序的方法多种多样,可以根据实际情况选择最合适的方法。

在 PHP 中,我们可以使用 `sort()` 函数对普通数组进行排序。但是如果我们要对关联数组(键值对数组)进行排序,我们需要使用其他函数来实现。

其中,最常用的函数是 `asort()`,其它可用的函数包括 `arsort()`、`ksort()` 和 `krsort()`。

下面我们将逐一介绍这些函数以及它们的基本用法。

### asort()

`asort()` 函数可以按照关联数组的值进行升序排序。这个函数会对原数组进行修改,因此它的返回值为 boolean 类型。

```php

$fruits = array("apple" => 2, "orange" => 1, "banana" => 3);

asort($fruits);

print_r($fruits);

输出结果:

Array

(

[orange] => 1

[apple] => 2

[banana] => 3

)

我们可以看到,函数对数组进行了修改,并将其按照值的大小进行了排序。

### arsort()

`arsort()` 函数也是按照关联数组的值进行排序,不同的是它是降序排序。

```php

$fruits = array("apple" => 2, "orange" => 1, "banana" => 3);

arsort($fruits);

print_r($fruits);

输出结果:

Array

(

[banana] => 3

[apple] => 2

[orange] => 1

)

### ksort()

`ksort()` 函数按照关联数组的键进行升序排序。

```php

$fruits = array("apple" => 2, "orange" => 1, "banana" => 3);

ksort($fruits);

print_r($fruits);

输出结果:

Array

(

[apple] => 2

[banana] => 3

[orange] => 1

)

### krsort()

`krsort()` 函数按照关联数组的键进行降序排序。

```php

$fruits = array("apple" => 2, "orange" => 1, "banana" => 3);

krsort($fruits);

print_r($fruits);

输出结果:

Array

(

[orange] => 1

[banana] => 3

[apple] => 2

)

以上是对关联数组排序的四个基本函数,我们可以根据自己的需求选择不同的函数进行排序操作。需要注意的是,这些函数都会改变原数组,而不是返回新的排序后的数组。

还有一个需要注意的地方是,如果关联数组的键是数字,那么 `ksort()` 和 `krsort()` 函数排序时会按照数字大小进行排序,而不是按照插入顺序排序。