我有一个多维数组,需要用“;列“;但保持另一列的组织


I have a multidimensional array, and need to sort it by a "column" but keeping the other column organized

我的数组有这样的结构:

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

我需要按浏览量最高的人订购,但它必须与id匹配。我做了一些研究,但有很多疑问。

我很难准确理解你对这个问题的意思,但这里有几个想法可能对你有用。

如果你的阵列是像一样组成的

array(
      array("id"=>1, "views"=>50),
      array("id"=>3, "views"=>16)
);

然后您可以使用带有闭包的usort(php5.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_multi-sort

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

或者如果你想按降序

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

更新

最终解决方案。。news是一个具有视图和id数组属性的对象。最终的解决方案是:

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