【问题标题】:sort array of objects in php based on specific key [duplicate]根据特定键对php中的对象数组进行排序[重复]
【发布时间】:2012-10-18 10:19:26
【问题描述】:

可能重复:
Sort array of objects
sort an object array in php

编辑:这是一个重复的问题。关闭这个

我有一个对象数组存储在 $articles 中,它们不一定以任何特定顺序返回。我正在尝试根据 idarticles 对对象进行排序。我知道如何在 javascript 中执行此操作,但不知道如何在 PHP 中执行此操作。这是一个示例响应。为了便于阅读,我用 json_encode 回应了它。任何帮助都会很棒

[
   {
      "idarticles":"61",
      "full_text":"",
      "main_image":"",
      "tags":null,
      "url":null,
      "summary":null,
      "title":"No Title Given"
   },
   {
      "idarticles":"64",
      "full_text":"",
      "main_image":"http:\/\/i2.cdn.turner.com\/cnn\/dam\/assets\/121014085050-11-stratos-1014-horizontal-gallery.jpg",
      "tags":"Sound,New Mexico,Maxima and minima",
      "url":"some string",
      "summary":"text",
      "title":"text"
   },
   {
      "idarticles":"63",
      "full_text":"",
      "main_image":"http:\/\/i2.cdn.turner.com\/cnn\/dam\/assets\/121014085050-11-stratos-1014-horizontal-gallery.jpg",
      "tags":"Sound,New Mexico,Maxima and minima",
      "url":"some string",
      "summary":"text",
      "title":"text"
   }
]

【问题讨论】:

  • 是的,明白了...基本上是重复的。
  • @Bill 你可以轻松删除...
  • @baba 它不会让我删除...已经有太多答案了

标签: php arrays sorting object


【解决方案1】:

很简单——使用uasort函数(用户自定义排序):

uasort($yourData, function ($a, $b) {
    if ($a['idarticles'] == $b['idarticles']) {
        return 0;
    }
    return ($a['idarticles'] < $b['idarticles']) ? -1 : 1;
});

这里的比较函数非常标准(参见示例here) - 只是它不是按值本身排序,而是按数据中的某些键排序。

【讨论】:

    【解决方案2】:

    尝试使用usort

    function sortByArticleId($a,$b){
      return strcmp($a->idarticles,$b->idarticles);
    }
    
    usort($ary,'sortByArticleId');
    

    【讨论】:

      【解决方案3】:

      你可以这样做

      usort($list, function ($a, $b) {
          $a = $a['idarticles'];
          $b = $b['idarticles'];
          return ($a == $b) ? 0 : (($a < $b) ? -1 : 1);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-11
        • 2017-08-11
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 2020-05-03
        相关资源
        最近更新 更多