【问题标题】:Sort multiple arrays from highest to lowest多个数组从高到低排序
【发布时间】:2016-05-24 20:09:32
【问题描述】:

我使用array 显示来自多个JSON 文件的数据,并使用sort();ID 的值从高到低排序。

我面临的问题是sort(); 分别对两个数组进行排序,导致将输出以下内容:

  • 11
  • 9
  • 7
  • 56
  • 12
  • 5

11、9 和 7 (第一个数组)已排序,56、12 和 5 (第二个数组) 已排序。如何合并数组以便输出以下内容:

  • 56
  • 12
  • 11
  • 9
  • 7
  • 5

这是我的 JSON 数组:

$homepage = array();
$homepage[] = '{
  "info": {
    "collection": [
      {
        "ID": "7"
      },
      {
        "ID": "9"
      },
      {
        "ID": "11"
      }
    ]
  }
}';
$homepage[] = '{
  "info": {
    "collection": [
      {
        "ID": "12"
      },
      {
        "ID": "56"
      },
      {
        "ID": "5"
      }
    ]
  }
}';

这里是我对 JSON 数组进行解码、排序和回显的地方:

foreach ($homepage as $homepage2) {
$data = json_decode($homepage2, false);

usort($data->info->collection, function ($a, $b) {
    return $b->ID - $a->ID;
});

foreach($data->info->collection as $key) {
    echo'
    '.$key->ID.'
    ';
}
}

【问题讨论】:

  • 在 cmets 中回答太长...作为回答回答...

标签: php arrays json sorting


【解决方案1】:

首先,您需要将这些 json 解码为数组并将它们添加到例如 $homepage_decoded...

$homepage_decoded = array();
foreach($homepage as $hp)
   $homepage_decoded[] = json_decode($hp,true);

$merged = array_unique(call_user_func_array('array_merge', $merged));

然后排序$merged...

sort($merged,SORT_NUMERIC);

如果我给出的代码中有一些语法错误,请原谅我是通过电话编写的。但是思路应该很清楚。

【讨论】: