PHP二维数组怎么排序
时间: 2023-07-20 08:05:30 浏览: 87
可以使用PHP中的usort函数来对二维数组进行排序。首先,定义一个比较函数,然后传递该函数和要排序的数组作为参数。比如,以下是按照某一列进行排序的示例代码:
```php
<?php
// 要排序的二维数组
$array = array(
array('name'=> 'John', 'age'=> 26),
array('name'=> 'Jane', 'age'=> 21),
array('name'=> 'Bob', 'age'=> 31)
);
// 按照age列进行排序
usort($array, function($a, $b) {
return $a['age'] - $b['age'];
});
// 输出排序后的结果
foreach($array as $row) {
echo $row['name'] . ' - ' . $row['age'] . '<br />';
}
?>
```
该代码会输出:
```
Jane - 21
John - 26
Bob - 31
```
我们可以根据具体的需求调整比较函数,以实现不同的排序结果。
相关问题
php 二维数组 随机排序_php二维数组排序方法(array_multisort usort)
在 PHP 中,可以使用 `array_multisort()` 或 `usort()` 函数来对二维数组进行排序。
`array_multisort()` 函数可以同时对多个数组或多维数组进行排序,并且可以指定升序或降序。以下是一个随机排序的示例:
```php
// 定义二维数组
$people = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'John', 'age' => 25),
array('name' => 'Mary', 'age' => 18),
array('name' => 'Peter', 'age' => 30)
);
// 获取年龄列作为排序依据
foreach ($people as $key => $row) {
$age[$key] = $row['age'];
}
// 使用 $age 数组对 $people 数组进行排序
array_multisort($age, SORT_DESC, $people);
// 输出排序结果
print_r($people);
```
上述示例中,我们首先使用 `foreach` 循环遍历 `$people` 数组,获取其中的年龄列作为排序依据,并将其存储到 `$age` 数组中。然后,使用 `array_multisort()` 函数对 `$people` 数组进行排序,排序规则为按照年龄列降序排列。最后,输出排序后的结果。
另外,也可以使用 `usort()` 函数对二维数组进行排序,该函数需要自定义排序函数。以下是一个随机排序的示例:
```php
// 定义二维数组
$people = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'John', 'age' => 25),
array('name' => 'Mary', 'age' => 18),
array('name' => 'Peter', 'age' => 30)
);
// 自定义随机排序函数
function randomSort($a, $b) {
return rand(-1, 1);
}
// 使用 usort() 函数对 $people 数组进行排序
usort($people, 'randomSort');
// 输出排序结果
print_r($people);
```
上述示例中,我们首先定义了一个自定义的排序函数 `randomSort()`,该函数返回 -1、0 或 1 中的一个随机值。然后,使用 `usort()` 函数对 `$people` 数组进行排序,排序规则为按照 `randomSort()` 函数的返回值进行排序。最后,输出排序后的结果。
php 二维数组排序从大到小
可以使用PHP中的`usort()`函数来实现二维数组按照指定键的值从大到小排序。
示例代码:
```
$students = array(
array('name' => 'Tom', 'age' => 18, 'score' => 90),
array('name' => 'John', 'age' => 20, 'score' => 85),
array('name' => 'Mary', 'age' => 19, 'score' => 95),
array('name' => 'Peter', 'age' => 21, 'score' => 80)
);
usort($students, function($a, $b) {
return $b['score'] - $a['score'];
});
print_r($students);
```
输出结果:
```
Array
(
[0] => Array
(
[name] => Mary
[age] => 19
[score] => 95
)
[1] => Array
(
[name] => Tom
[age] => 18
[score] => 90
)
[2] => Array
(
[name] => John
[age] => 20
[score] => 85
)
[3] => Array
(
[name] => Peter
[age] => 21
[score] => 80
)
)
```
在上面的示例代码中,我们定义了一个包含四个学生信息的二维数组。然后使用`usort()`函数来对数组进行排序,传入一个匿名函数用于指定排序规则,这里我们按照`score`字段的值从大到小进行排序。最后,我们使用`print_r()`函数输出排序后的数组。
阅读全文