微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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的本机数组.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐