【问题标题】:How do I sort a 3-dimensional array that includes objects?如何对包含对象的 3 维数组进行排序?
【发布时间】:2017-09-13 16:23:07
【问题描述】:

我正在构建一个 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.

基于this very helpful page on PHP array sorting,我觉得我有点接近了。不幸的是,它只是在代码出现的部分之后给了我一个空白页。

          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');

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

【问题讨论】:

标签: php arrays wordpress sorting multidimensional-array


【解决方案1】:

这是因为您试图在访问数组元素的方法中访问对象的属性。您不能使用索引来访问对象的属性。您应该使用-&gt; 而不是[]。您可以查看demo 以了解如何访问对象属性。

参考how to access array/object

在比较功能中将您的$a['data']['display_name'] 更改为$a-&gt;data-&gt;display_name,并更改您的$b

【讨论】:

  • 没用,但我觉得这让我更近了一步!谢谢!
  • 您可以记录变量,并对其进行调试。
猜你喜欢
  • 1970-01-01
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2015-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多