zvvq技术分享网

PHP中如何按照某个字段对数组进行排序?

作者:zvvq博客网
导读array('name'=>'王五','age'=>21,'score'=>85)array('name'=>'王五','age'=>21,'score'=>85)array('name'=>'王五','age'=>21,'score'=>85)

在PHP中,数组是一种非常常见的数据类型,用于存储一组相关的数据。当我们需要对数组进行排序时,可以使用PHP提供的sort()函数,但是如果我们需要按照数组中的某个字段进行排序呢?下面就让我们来看看如何实现。

内容来自samhan


  zvvq

首先,我们需要定义一个包含多个元素的数组,每个元素都包含一个或多个字段。例如:

内容来自samhan

```

copyright zvvq

$students = array( 内容来自zvvq,别采集哟

array(&;name&; => &;张三&;, &;age&; => , &;score&; => 0), 内容来自zvvq

array(&;name&; => &;李四&;, &;age&; => , &;score&; => 0), 内容来自zvvq,别采集哟

array(&;name&; => &;王五&;, &;age&; => , &;score&; => ) zvvq

); 内容来自samhan

```

内容来自samhan666

上面的数组包含三个元素,每个元素都包含三个字段:姓名、年龄和分数。

zvvq.cn

现在,我们可以使用PHP提供的usort()函数来按照某个字段对数组进行排序。usort()函数需要两个参数:第一个参数是要排序的数组,第二个参数是一个回调函数,用于定义排序规则。回调函数接受两个参数,分别是要比较的两个元素。

内容来自zvvq,别采集哟

例如,如果我们要按照分数从高到低对上面的数组进行排序,可以定义一个回调函数如下:

zvvq好,好zvvq

```

内容来自samhan666

function cmp($a, $b) {

内容来自samhan

if ($a[&;score&;] == $b[&;score&;]) { 内容来自samhan

return 0;

内容来自samhan

}

本文来自zvvq

return ($a[&;score&;] > $b[&;score&;]) ? - : ; 内容来自zvvq,别采集哟

}

内容来自zvvq

```

copyright zvvq

上面的回调函数中,如果$a和$b的分数相等,则返回0;如果$a的分数大于$b的分数,则返回-,否则返回。这样就可以按照分数从高到低对数组进行排序了。 内容来自zvvq

完整的代码如下: zvvq好,好zvvq

``` 本文来自zvvq

$students = array(

内容来自samhan

array(&;name&; => &;张三&;, &;age&; => , &;score&; => 0), copyright zvvq

array(&;name&; => &;李四&;, &;age&; => , &;score&; => 0), 内容来自samhan666

array(&;name&; => &;王五&;, &;age&; => , &;score&; => )

本文来自zvvq

); 本文来自zvvq

function cmp($a, $b) {

本文来自zvvq

if ($a[&;score&;] == $b[&;score&;]) {

本文来自zvvq

return 0; zvvq好,好zvvq

}

内容来自samhan666

return ($a[&;score&;] > $b[&;score&;]) ? - : ;

本文来自zvvq

} 内容来自zvvq,别采集哟

usort($students, "cmp"); 内容来自samhan666

print_r($students);

内容来自zvvq,别采集哟

``` 内容来自samhan

输出结果如下: zvvq

```

zvvq

Array

zvvq.cn

( zvvq

[0] => Array

zvvq好,好zvvq

(

copyright zvvq

[name] => 李四 内容来自zvvq

[age] => zvvq好,好zvvq

[score] => 0 内容来自zvvq,别采集哟

) 内容来自zvvq

[] => Array 内容来自zvvq

(

内容来自samhan666

[name] => 王五

内容来自samhan

[age] => 内容来自zvvq,别采集哟

[score] => copyright zvvq

) zvvq.cn

[] => Array 内容来自zvvq,别采集哟

( 本文来自zvvq

[name] => 张三 zvvq好,好zvvq

[age] => copyright zvvq

[score] => 0

内容来自samhan666

)

zvvq

) 内容来自samhan666

``` copyright zvvq

可以看到,数组已经按照分数从高到低排序了。 zvvq

除了按照分数排序,我们也可以按照其他字段进行排序,只需要修改回调函数中的比较规则即可。例如,如果要按照年龄从小到大排序,可以修改回调函数如下: 内容来自zvvq

``` 内容来自samhan

function cmp($a, $b) { zvvq.cn

if ($a[&;age&;] == $b[&;age&;]) { zvvq

return 0; copyright zvvq

} zvvq.cn

return ($a[&;age&;] < $b[&;age&;]) ? - : ; 本文来自zvvq

} zvvq

``` 本文来自zvvq

这样就可以按照年龄从小到大对数组进行排序了。

内容来自samhan666

按照字段对PHP数组排序可以使用usort()函数,并通过定义回调函数来定义排序规则。只需要修改回调函数中的比较规则,就可以按照不同的字段进行排序。

内容来自samhan