如何对包含对象的三维数组进行排序?

3
我正在构建一个WordPress网站,在这个网站中,我需要在WP_User_Query查询已经运行之后对结果进行排序。对于那些不熟悉的人来说,它有像这样的元素:
Array (
  [0] => WP_User Object (
    [data] => stdClass Object (
      [ID] => 1
      [user_login] => MarvinLazer
      [user_pass] => $P$BUGHRCjMzlvn7dlGp53UTPC8GMF081/
      [user_nicename] => marvinlazer
      [user_email] => marvin@lazer.com
      [user_url] => http://marvinlazer.com
      [user_registered] => 2017-03-04 23:08:08
      [user_activation_key] =>
      [user_status] => 0
      [display_name] => Marvin Lazer
    )
    [ID] => 1
    [caps] => Array (
      [subscriber] => 1
    )
    [cap_key] => wp_capabilities
    [roles] => Array (
      [0] => subscriber
    )
    [allcaps] => Array (
      [read] => 1
      [level_0] => 1
      [subscriber] => 1
    )
    [filter] =>
  )
  [1] => WP_User Object ( etc. etc.

基于这个非常有用的 PHP 数组排序页面,我觉得我做得差不多了。不幸的是,在代码部分之后,它只给了我一个空白页面。
          function cmp(array $a, array $b) {
              if ($a['data']['display_name'] < $b['data']['display_name']) {
                  return -1;
              } else if ($a['data']['display_name'] > $b['data']['display_name']) {
                  return 1;
              } else {
                  return 0;
              }
          }

          usort($user_query->results, 'cmp');

有人能指出我做错了什么吗?

访问数组/对象 - LF00
1个回答

1
这是因为您正在尝试在访问数组元素的方法中访问对象的属性。您不能使用索引来访问对象的属性。您应该使用->而不是[]。您可以检查此演示以说明如何访问对象属性。
请参考如何访问数组/对象 将您的$a['data']['display_name']更改为$a->data->display_name,并将您的$b更改为比较函数。

没成功,但我感觉这让我更接近了一步!谢谢! - MarvinLazer
你可以记录变量并进行调试。 - LF00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接