我有一个多维数组,需要通过“列”对其进行排序,但保持其他列的组织

时间:2013-07-16 21:07:53

标签: php arrays

我的数组有这样的结构:

$news = array('id' => '', 'views' => '');

我需要通过查看次数最多来订购,但必须与ID匹配。我做了一些研究,但有很多疑问。

1 个答案:

答案 0 :(得分:1)

我在解释你对这个问题的意思时遇到了一些麻烦,但这里有一些认为可能对你有用的东西。

如果您的数组像

那样组成
array(
      array("id"=>1, "views"=>50),
      array("id"=>3, "views"=>16)
);

然后你可以使用带闭包的usort(php 5.3)

usort($news, function ($a, $b){ return $a["views"] - $b["views"]});

如果你想按降序排列,你可以在闭包中交换$ a和$ b

usort($news, function ($a, $b){ return $b["views"] - $a["views"]});

如果你有一个像

这样的数组
array(
     "id"=>array(1,2),
     "views"=>array(50, 16)
);

然后您可以使用array_multisort

array_multisort($news["views"], $news["id"]);

或者如果你想按降序排列

array_multisort($news["views"], SORT_DESC, SORT_NUMERIC, $news["id"]);

<强>更新

最终的解决方案.. news是一个带有views和id数组属性的对象。最终的解决方案是:

array_multisort($news->views, $news->id);