php 二维数组 按指定字段倒序,字段值相同的,随机排序
时间: 2023-08-07 22:02:50 浏览: 94
可以使用 PHP 的 `usort()` 函数来实现,`usort()` 函数可以自定义排序规则。下面是一个实现按指定字段倒序,字段值相同的,随机排序的示例代码:
```php
// 假设 $arr 是一个二维数组,$field 是指定的字段名
usort($arr, function($a, $b) use ($field) {
if ($a[$field] == $b[$field]) {
return rand(-1, 1); // 如果指定字段值相同,就随机排序
} else {
return $b[$field] - $a[$field]; // 按指定字段倒序排序
}
});
// 排序后的数组
print_r($arr);
```
在上面的代码中,我们使用了一个匿名函数作为 `usort()` 函数的排序规则。其中,`$a` 和 `$b` 分别代表待排序的两个元素,`$field` 是指定的字段名。如果 `$a` 和 `$b` 的指定字段值相同,就使用 `rand(-1, 1)` 随机产生一个数来决定它们的顺序;否则,就按照指定字段倒序排序。最后,`usort()` 函数会将排序后的数组返回。
相关问题
php 二维数组按某个字段排序
可以使用 PHP 中的 `array_multisort` 函数来对二维数组按照指定的字段进行排序。以下是一个示例代码:
```php
<?php
// 定义一个二维数组
$arr = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'Jerry', 'age' => 18),
array('name' => 'Alice', 'age' => 25)
);
// 定义一个数组,用于存储需要排序的字段
$sortArr = array();
foreach ($arr as $key => $value) {
$sortArr[$key] = $value['age'];
}
// 使用 array_multisort 函数进行排序
array_multisort($sortArr, SORT_ASC, $arr);
// 输出排序后的数组
print_r($arr);
?>
```
以上代码会按照年龄从小到大的顺序排序输出每个人的名字和年龄。你可以根据自己的需求修改数组 `$sortArr` 来指定需要排序的字段以及排序方式。
php二维数组 按某个值排序
可以使用 PHP 中的 `usort` 函数来对二维数组按照指定的值进行排序。以下是一个示例代码:
```php
<?php
// 定义一个二维数组
$arr = array(
array('name' => 'Tom', 'age' => 20),
array('name' => 'Jerry', 'age' => 18),
array('name' => 'Alice', 'age' => 25)
);
// 定义一个回调函数,用于比较两个数组元素的大小
function compare($a, $b) {
if ($a['age'] == $b['age']) {
return 0;
}
return ($a['age'] < $b['age']) ? -1 : 1;
}
// 使用 usort 函数进行排序
usort($arr, 'compare');
// 输出排序后的数组
print_r($arr);
?>
```
以上代码会按照年龄从小到大的顺序排序输出每个人的名字和年龄。你可以根据自己的需求修改回调函数 `compare` 来按照不同的值进行排序。
阅读全文