php usort
时间: 2024-01-12 14:04:30 浏览: 27
`usort()` 函数是 PHP 中的一个排序函数,它可以按照指定的比较函数对数组进行排序。该函数的语法如下:
```
usort ( array &$array , callable $cmp_function ) : bool
```
其中,`$array` 是要排序的数组,`$cmp_function` 是比较函数,它用来定义数组元素之间的比较规则。比较函数需要接收两个参数,表示要比较的两个元素,返回值为整数型,表示两个元素之间的大小关系。
下面是一个使用 `usort()` 函数对数组进行排序的例子,假设有一个数组 `$arr`,它包含一些整数值:
```php
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$arr = array(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);
usort($arr, "cmp");
print_r($arr);
```
在上面的例子中,我们定义了一个比较函数 `cmp()`,它返回两个元素之间的大小关系。然后,我们使用 `usort()` 函数对数组 `$arr` 进行排序,并打印排序后的结果。
相关问题
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()` 函数的返回值进行排序。最后,输出排序后的结果。
array_multisort usort 结合使用
`array_multisort()` 和 `usort()` 都是用于对数组进行排序的 PHP 函数,但它们的工作方式有所不同。`array_multisort()` 可以同时对多个数组进行排序,而 `usort()` 只能对一个数组进行排序,且需要指定一个回调函数来确定排序规则。
如果你想要对一个数组进行排序,并且排序规则比较复杂,可以使用 `usort()`。然后,如果你有多个数组需要按照相同的排序规则进行排序,可以使用 `array_multisort()`。具体操作步骤如下:
1. 使用 `usort()` 对数组进行排序,可以根据需要编写回调函数来确定排序规则。
```php
function compare($a, $b) {
// 排序规则
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
usort($array, 'compare');
```
2. 使用 `array_multisort()` 对其他需要排序的数组按照相同的规则进行排序。
```php
// 假设有一个需要排序的二维数组 $array1,其中每个元素也是一个数组
// 另一个需要排序的一维数组 $array2,其中每个元素是字符串
// 对 $array1 按照 compare() 函数定义的规则进行排序
// 并将 $array2 按照 $array1 相应位置的元素进行排序
$ages = array_column($array1, 'age');
array_multisort($ages, SORT_ASC, $array1, $array2);
```
这样,就可以将 $array1 和 $array2 按照相同的排序规则进行排序。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)