php - 通过将 null/empty 最后留空来对 laravel 集合进行排序

标签 php laravel collections usort

我似乎无法对 laravel 集合进行排序,因此 empty/null 数据最终会排在最后。 (对 usort 有点困惑)

我几乎只有一堆 times/timestamps 需要订购。某些行可能没有该列。

我希望数据显示在 ASC/ascendingempty/null 数据最后显示。

$collection->sortBy('timestamp') 排序很好,但不知道如何处理空字段。

data

表格是这样的。

   $data = $data->sort(function($a, $b) use ($sortBy) {
        if ($a->{$sortBy} and $b->{$sortBy}) return 0; 
        return ($a->{$sortBy} > $b->{$sortBy}) ? -1 : 1;
    }); 

我从互联网上尝试的随机代码,我无法正常工作。 $sortBy 包含要排序的字段名称(因为它可能会更改) 错误的代码处理空/空数据,但它是无序的。 faulty

最佳答案

必须使用带有闭包的 sort()。下面将对时间戳 ASC 进行排序,最后为 NULL。

$sorted = $collection->sort(function ($a, $b) {
    if (!$a->timestamp) {
        return !$b->timestamp ? 0 : 1;
    }
    if (!$b->timestamp) {
        return -1;
    }
    if ($a->timestamp == $b->timestamp) {
        return 0;
    }

    return $a->timestamp < $b->timestamp ? -1 : 1;
});

关于php - 通过将 null/empty 最后留空来对 laravel 集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449707/

相关文章:

collections - 使用 jekyll/liquid 如何获取 yaml 哈希的所有键

java - 对多个字段进行排序——它可以工作,但无法理解它是如何工作的。

php - 无法在 Chrome 或 Firefox 中下载生成的 .ics 文件

php - 在数据库同步中保持相同的ID

php - 加密解密环境变量

php - Stripe API 列出发票的速度非常慢

c# - 将 List<int> 转换为 List<List<int>>

php 替换 %20

php - 我应该如何通过 AJAX 发出长 PHP 请求,定期检查状态更新,并在请求取消时关闭脚本?

jquery - 500(内部服务器错误)ajax 和 laravel