首页 > 解决方案 > 在 Laravel 响应中按升序对 JSON 对象数组进行排序

问题描述

我有一个 JSON 对象的集合,我试图根据 days_left 字段中的值按升序排列它们。我正在使用 sortBy 方法,但出现此错误

asort() 期望参数 2 为整数,给定字符串

我将它们存储在一个名为$life的变量中

我正在尝试安排的 JSON 对象数组

array:62 [▼
  0 => {#375 ▼
    +"customer_id": "2082499"
    +"customer_name": "MARY ***************"
    +"agent_no": "567"
    +"agent_code": "2212"
    +"policy_number": "*************"
    +"plan": "Triplex Term 12"
    +"status": "NOT TAKEN UP"
    +"premium": "10326"
    +"sum_assured": "955000"
    +"effective_date": "2015-04-16 12:00:00"
    +"issue_date": "2015-04-16 12:00:00"
    +"premium_due_date": "2015-04-16 12:00:00"
    +"outstanding_date": "2015-04-16 12:00:00"
    +"maturity_date": "2027-04-15 12:00:00"
    +"days_left": -1341
  }
  1 => {#381 ▼
    +"customer_id": "804286"
    +"customer_name": "PA************** "
    +"agent_no": "567"
    +"agent_code": "2212"
    +"policy_number": "IL201400388092"
    +"plan": "CAREER"
    +"status": "AWA*************"
    +"premium": "3467"
    +"sum_assured": "400000"
    +"effective_date": "2014-03-31 12:00:00"
    +"issue_date": "2014-03-31 12:00:00"
    +"premium_due_date": "2014-03-31 12:00:00"
    +"outstanding_date": "2014-03-31 12:00:00"
    +"maturity_date": "2026-03-30 12:00:00"
    +"days_left": -1722
  }
]

我用来按升序排列的代码

collect($life)->sortBy('days_left','ASC');

标签: laravelsorting

解决方案


在您的sortBy()中删除第二个参数:

collect($life)->sortBy('days_left');
// automatically sorting in ascending order.

如果您按降序排序,请使用:

collect($life)->sortByDesc('days_left');

我希望它会有所帮助。


推荐阅读