thinkphp5 把二维数组$tablist按其中一个元素bill_type值从大到小排序有哪些方式
时间: 2024-10-24 21:06:59 浏览: 15
在ThinkPHP5中,你可以使用`array_sort()`函数结合`usort()`函数对二维数组 `$tablist` 按照 `bill_type` 元素的值进行降序排序。这里提供两种常见的方法:
1. **直接使用usort()函数**:
```php
function sort_by_bill_type($a, $b) {
return $b['bill_type'] - $a['bill_type'];
}
/tablist = array_sort($tablist, 'sort_by_bill_type', SORT_DESC);
```
这里的 `sort_by_bill_type` 函数接受两个数组元素作为参数,如果第一个元素的 `bill_type` 大于第二个,则返回正值,反之则返回负值,实现降序排列。
2. **使用自定义比较函数**:
```php
$tablist = array_column($tablist, null, 'bill_type'); // 将bill_type作为键名提取出来
usort($tablist, function ($a, $b) {
return $b - $a; // PHP会自动处理字符串转换成整数的降序比较
});
// 再将bill_type作为键恢复原数组结构
$result = [];
foreach ($tablist as $key => $value) {
$result[$key] = current(array_filter($value, function ($item) { return $item['bill_type'] == $key; }));
}
```
这种方法首先按照 `bill_type` 的值创建了一个新的关联数组,然后通过自定义比较函数进行排序,并将结果转换回原始的二维数组形式。
阅读全文