【问题标题】:Can usort() work for an object?usort() 可以为对象工作吗?
【发布时间】:2013-03-18 22:51:16
【问题描述】:

我收到此错误:

ErrorException: 警告:usort() 期望参数 1 是数组,给定对象

我将一个 SQL 查询的结果对象传递给 usort:

usort($results, array($this, "sortDistance"));

我的排序功能:

private function sortDistance ($first, $next)
{
    $d1 = $this->searchDistance[$first->zip];
    $d2 = $this->searchDistance[$next->zip];

    if ($d1 == $d2) {
        return 0;
    }
    return ($d1 > $d2) ? +1 : -1;
}

还有其他方法可以根据对象的属性对对象进行排序吗?

【问题讨论】:

  • 再次阅读错误信息。只有序列(读取:数组)可以使用*sort 函数进行排序。它不是在谈论 in 数组中的值。
  • 什么是“结果对象”?
  • 如果您只使用对象属性,您可以将对象转换为数组,对其进行排序,然后再次将其转换为对象

标签: php


【解决方案1】:

您可以从结果集中创建一个对象数组,其中对象具有您需要排序的属性。然后使用成员函数作为usort的回调

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多