从最高到最低排序多个数组

时间:2016-05-24 20:09:32

标签: php arrays json sorting

我使用JSON显示来自多个array文件的数据,并使用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.'
    ';
}
}

1 个答案:

答案 0 :(得分:3)

首先,您需要将这些jsons解码为数组并将其添加到例如$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);

打扰一下,如果我给出的代码中有一些语法错误,请从手机写入。但想法应该是明确的。