在PHP中对多维数组中的子数组进行排序

时间:2015-03-04 06:22:08

标签: php arrays sorting multidimensional-array

我知道有类似的问题已被问到,但即使看了所有这些问题,我似乎无法让它发挥作用。我认为它比我发现的其他例子稍微复杂一点。我知道有人会说这是一个重复的问题 - 但我已经很难从我迄今为止见过的例子中得到它 - 所以提前抱歉!

所以给定PHP中的这个多维数组$ results_display(下面的var_dump),子数组有5个成员"#results",我想按照值排序(降序)那些5 "#已改变"字符串。

有人可以帮助一个女孩在几天之内将她的头撞在桌子上吗?

非常感谢!!!

我尝试的是在var_dump下面。我评论了标题的部分,试着让第一部分工作。

$results_display =
array(8) {
   ["#theme"]=> string(18) "hs_filters_results"
   ["#title"]=> string(18) "On-Demand Webinars"
   ["#body"]=> NULL
   ["#results"]=> array(5) {
     [0]=> array(3) {      
     ["#changed"]=> string(10) "1403279484"
     ["#theme"]=> string(17) "hs_filters_result"
     ["#result"]=> array(25) {
        ["#nid"]=> string(4) "2057"
        ["#node_type"]=> array(2) {
           ["machine_name"]=> string(7) "webinar"
           ["name"]=> string(7) "Webinar" }
        ["#title"]=> string(61) "7 Critical Reasons to Automate Handling of IBM i Spool Files "
        ["#brand_nid"]=> string(2) "29"
        ["#brand_machine_name"]=> string(5) "brand"
        ...  }
   }
...

}

// Obtain a list of columns for the results array
foreach ($results_display as $key => $row) {
  $changed[$key]  = $row['changed'];
  //$title[$key] = $row['title'];
} 

// Sort the data with date changed descending, title ascending
// Add $results_display as the last parameter, to sort by the common key
//array_multisort($changed, SORT_DESC, $title, SORT_ASC, $results_display);
array_multisort($changed, SORT_DESC, $results_display);

1 个答案:

答案 0 :(得分:0)

usort($results_display['results'], function ($a, $b) {
    return $a['changed'] - $b['changed'];
});

这应该让你开始。有关更多可能的排序选项,请参阅https://stackoverflow.com/a/17364128/476