我的数组有这个结构:
$news = array('id' => '', 'views' => '');
我需要按观看次数最多的人订购,但它必须与 id 匹配。我做了一些研究,但有很多疑问。
我在解读你的问题的确切含义时遇到了一些麻烦,但这里有一些想法可能对你有用。
如果你的数组组成像
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 是一个具有视图和 id 数组属性的对象。最终的解决方案是:
array_multisort($news->views, $news->id);