加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何通过每个对象的属性对对象数组进行排序

发布时间:2020-12-13 22:10:26 所属栏目:PHP教程 来源:网络整理
导读:我有一个从eventbrite.com api返回的数据数组,存储在一个名为$restrictedEvents的变量中,它看起来像下面的数据.这只是为了粘贴的一个事件的代表,但它在完整数组中有大约80个这样的stdClass对象. 我想通过每个stdClass对象中的[title]键按字母顺序对此数组进
我有一个从eventbrite.com api返回的数据数组,存储在一个名为$restrictedEvents的变量中,它看起来像下面的数据.这只是为了粘贴的一个事件的代表,但它在完整数组中有大约80个这样的stdClass对象.

我想通过每个stdClass对象中的[title]键按字母顺序对此数组进行排序.我尝试过使用:

usort($restrictedEvents,"title");

但是,这会返回以下错误:

Warning: usort() [function.usort]: Invalid comparison function in model.php on line 109

我的猜测是它无法找到标题键,因为它处于下一级别.关于我出错的地方以及我如何按标题排序的任何指示都将非常感激.非常感谢.

Array 
(
[4791063199] => stdClass Object
    (
        [box_header_text_color] => 393837
        [link_color] => EE6600
        [box_background_color] => FFFFFF
        [box_border_color] => D9D4D0
        [timezone] => Europe/London
        [organizer] => stdClass Object
            (
                [url] => http://www.eventbrite.com/org/2866607767
                [description] => 
                [long_description] => 
                [id] => 2866607767
                [name] => B&Q Manifestival
            )

        [background_color] => E3DFDC
        [id] => 4791063199
        [category] => 
        [box_header_background_color] => F0ECE9
        [capacity] => 20
        [num_attendee_rows] => 0
        [title] => Closed Event Test
        [start_date] => 2012-11-07 19:00:00
        [status] => Live
        [description] => Lorem ipsum
        [end_date] => 2012-11-07 21:00:00
        [tags] => 
        [timezone_offset] => GMT+0000
        [text_color] => 393837
        [title_text_color] => 
        [password] => 
        [tickets] => Array
            (
                [0] => stdClass Object
                    (
                        [ticket] => stdClass Object
                            (
                                [description] => 
                                [end_date] => 2012-11-07 17:00:00
                                [min] => 1
                                [max] => 1
                                [price] => 0.00
                                [quantity_sold] => 0
                                [visible] => true
                                [currency] => GBP
                                [quantity_available] => 20
                                [type] => 0
                                [id] => 15940001
                                [name] => Manifestival Event
                            )

                    )

            )

        [created] => 2012-11-07 10:40:36
        [url] => http://www.eventbrite.com/event/4791063199
        [box_text_color] => 393837
        [privacy] => Private
        [venue] => stdClass Object
            (
                [city] => 
                [name] => HR Training Room
                [country] => 
                [region] => 
                [longitude] => 0
                [postal_code] => 
                [address_2] => 
                [address] => 
                [latitude] => 0
                [country_code] => 
                [id] => 2619469
                [Lat-Long] => 0.0 / 0.0
            )

        [modified] => 2012-11-07 10:47:20
        [repeats] => no
    )

解决方法

要使用的第二个参数应该是一个函数.请参阅 http://php.net/manual/en/function.usort.php.您需要将其传递给以下函数:

function cmp($a,$b)
{
    return strcmp($a->title,$b->title);
}

我想你会把它称为usort($restrictedEvents,“cmp”);.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读