php按照运算结果排序输出的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php按照运算结果排序输出的问题相关的知识,希望对你有一定的参考价值。
如题,数据库内,各项参数,与传入值计算后得到数组$tie[a],我想将数据库内各项,按照这个新数组的顺序从大到小排序输出,输出前5个,请问这个怎么输出呢?输出时,输出该项目的,图片,名称和说明。麻烦前辈,高人指点。
前辈们,我的代码是 while ($item = mysql_fetch_array($rs))
if( $item["season"]==$tm)
$bnun = Sqrt($item["ccz"]*$item["ccz"] +$item["sjz"]*$item["sjz"]);
for($c=1; $c<=6; $c++)
$anun[$c] = Sqrt($caizi[$c] *$caizi[$c] +$sheji[$c]*$sheji[$c] );
if($anun[$c]!=0)
$temp[$c]= ($caizi[$c]*$item["ccz"] + $sheji[$c]*$item["sjz"])/$anun[$c] *$bnun;
else$temp[$c]=0;
$tem = ($temp[1] +$temp[2] +$temp[3][a] +$temp[4] +$temp[5])/$num1;
echo "$tem";
现在我要根据$tem的值,按从大到小的顺序,输出,数据库的前5项
用array_reverse返回一个单元顺序相反的数组
然后for循环$i $i=1;$i<=5;$i++ 以$i作为键值就可以得到你所说的从大到小排序了。。 后面的问题因为不太清楚你的数组是什么样的 就不说了。 参考技术B 如果是mysql数据库的话,查询的时候 加入排序语句就可以了
例如 select * from tablename where 1=1 order by a desc limit 0,5;
order by a desc 的意思就是按照a从大到小的顺序排列
limit表示的是从结果的第0个值开始获取前5个值。
MongoDB - 没有排序的输出距离
【中文标题】MongoDB - 没有排序的输出距离【英文标题】:MongoDB - output distance without sorting 【发布时间】:2015-02-10 12:00:37 【问题描述】:我是 MongoDB 新手,我正跳入地理空间查询的深水区。
我注意到geoNear
命令和$geoNear
聚合运算符可以输出计算出的距离(使用distanceField
)。
命令和操作符也会按照距离对结果进行排序。
有没有办法输出距离而不按距离排序?即使用一些投影运算符。
这显然可以使用带有javascript函数的map
手动计算距离来完成,但似乎有一个内置的距离计算函数必须更有效。
此外,使用$geoNear
运算符似乎效率低下,然后(在聚合管道中)处理结果......对吗?
谢谢
【问题讨论】:
【参考方案1】:由于$geoNear
查询的 num 和 limit 参数(它们是互斥的——如果两者都存在,则 num 覆盖限制,请参阅docs),结果必须按距离排序以确定哪个要返回的。因此,事实上,在返回排序结果时没有做任何额外的工作。据我所知,无法返回未按距离排序的结果。
这在分片的情况下特别有意义,目前无法在geo key 上完成,因为查询必须发送到所有分片,然后根据 num 和/的值组合并返回结果或限制。
MongoDB 不像某些空间数据库那样使用 R-tree 索引,这可以使距离搜索更有效,但使用 geohash 上的 B-tree,因此距离查询可以通过比较最近的距离来工作象限,直到找到足够的数字,这可能大于 num 或 limit,然后在按距离排序后仅返回该数字。
【讨论】:
什么会更有效:db.collection.find(query).sort(sort).map( function(d) ...return-d-with-calculated-distance... )
或 db.collection.aggregate([ $geoNear: distanceField: "...", ... , $match: query , $sort: sort ])
?您还有其他方法可以将计算出的距离添加到结果中吗?
不测试我不知道,但总的来说,我认为编译函数与索引结合会击败 map-reduce。
我很惊讶没有办法:db.collection.find(query, projection-that-adds-a-distance-field)
- 距离计算功能已经实现了!
好吧,正如你自己所说,总是有 map-reduce。查看 MongoDB 源代码,如果您有这种倾向,空间部分非常有趣。以上是关于php按照运算结果排序输出的问题的主要内容,如果未能解决你的问题,请参考以下文章
C语言一堆数组中存放了10个小于100的整数,请编程对所有数据按照从小到大的顺序进行排序,若个位数相等,则按照十位从小到大的顺序排序,输出排序后的结果