PHP:我有一个关联数组(int => object),想要对它进行排序

class DownTime {
    public $total, $longest, $count;
}

我有一个关联数组(键是一个id,值是DownTime对象).
我想根据$total对它进行排序
我已经阅读了有关stackoverflow的PHP: Sorting Arrays和其他一些问题.

我理解uasort会做得很好.但是,作为一种OOP方法,我更喜欢在DownTime类中定义一个特殊函数(比如在C中定义operator<(),或在Java中实现Comparable.compareto()),而不是在调用某个sort函数时传递函数.

解决方法:

仍在使用该语言的另一个选项是创建一个扩展Iterator而不是使用本机数组的迭代器集合类.

实际上,您还可以扩展ArrayObject并覆盖排序方法

class MyArrayObject extends ArrayObject {
    public function natsort() {
        $this->uasort(function($a, $b) {
            return $a->total > $b->total ? 1 : -1;
        });
    }
}

$arrayObject = new MyArrayObject($array);
$arrayObject->natsort();

foreach ($arrayObject as $value) {
    //sorted values
}

或者如果你真的需要一个原生数组:

$array = $arrayObject->getArraycopy();

但我发现我通常不需要使用迭代器/ arrayobjects的本机数组.

只是该类本身的比较函数的另一种替代方法……

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...