dtqi87613 2014-05-30 12:31
浏览 27
已采纳

如何按这些对象键对包含对象的数组进行排序[复制]

This question already has an answer here:

I have such an array that I need to be able to sort by keys ASC and DESC

Array
(
    [0] => stdClass Object
        (
            [id] => 2323
            [regno] => 45101008785
            [regdate] => 1993-03-26
        )

    [1] => stdClass Object
        (
            [id] => 2322
            [regno] => 49201003827
            [regdate] => 1992-04-08
        )

    [2] => stdClass Object
        (
            [id] => 2318
            [regno] => 240100720
            [regdate] => 1992-10-01
        )

    [3] => stdClass Object
        (
            [id] => 2317
            [regno] => 900100881
            [regdate] => 1992-12-28
        )
)

IE, if client sets GET parameters to ?sort_by=regno&type=asc, I need to sort this via PHP to:

Array
(

    [0] => stdClass Object
        (
            [id] => 2318
            [regno] => 240100720
            [regdate] => 1992-10-01
        )

    [1] => stdClass Object
        (
            [id] => 2317
            [regno] => 900100881
            [regdate] => 1992-12-28
        )

    [2] => stdClass Object
        (
            [id] => 2323
            [regno] => 45101008785
            [regdate] => 1993-03-26
        )

    [3] => stdClass Object
        (
            [id] => 2322
            [regno] => 49201003827
            [regdate] => 1992-04-08
        )
)

How is this done?

</div>
  • 写回答

2条回答 默认 最新

  • dongshu4221 2014-05-30 12:39
    关注

    I havent tested this - but it should be close.

    Have these two functions

    function sorter($type, $key) 
    {
        if ($type === 'asc')
        {
            return function ($a, $b) use ($key) {
                return strcmp($a->{$key}, $b->{$key});
            };
        }
        else
        {
            return function ($a, $b) use ($key) {
                return strcmp($b->{$key}, $a->{$key});
            };
        }
    }
    

    Then in your code

    usort($array, sorter($type, $sort_by));
    

    Example #4 on php.net should give you further help as well

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
  • ¥15 C++map释放不掉
  • ¥15 Mabatis查询数据
  • ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
  • ¥15 关于E22-400T22S的LORA模块的通信问题
  • ¥15 求用二阶有源低通滤波将3khz方波转为正弦波的电路