首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在php中根据另一个数组获取排序数组

如何在php中根据另一个数组获取排序数组
EN

Stack Overflow用户
提问于 2012-01-10 14:19:18
回答 2查看 109关注 0票数 0

我有一个脚本,其中我有这个字段DId(不是自动增加),评级,他们是逗号分隔的,评级来自数据库。现在我必须根据评级显示最高的5个评级和设备值,我可以通过rsort方法找到评级的最大值,然后将数组切分为5,但问题是如何根据评级获得DId。因为当对数组进行rsort时,我丢失了该数组的原始索引,并且此脚本基于数据库,并且每次更改评级时,设备都会根据评级进行更改。下面是我到目前为止所做的

代码语言:javascript
运行
复制
    $query=mysql_query("SELECT DId,Rating FROM wp_ratings1  WHERE QID='1' LIMIT 5,1");
    $row=mysql_fetch_array($query);
    $no1=explode(",",$row['DId']);
    $array_size=count($no1);
    $list = $row['Rating'];
    $array = explode(',', $list);
    rsort($array);
    $res=array_slice($array,0,5);
    print_r($array);


DId        ||   Rating||
36,37,38,     2.3,2.3,4.5, 
39,41,42,     1.0,0,0,
43,44,45,     3.4,1.2,3.12,
46,52,53   ||   2.33,1.22,0.9
EN

回答 2

Stack Overflow用户

发布于 2012-01-10 14:40:48

欢迎来到SO!

在您的示例中,我将解析数据并将其提供给变量,如下所示:

代码语言:javascript
运行
复制
$arrData[0] = array(36=>2.3, 37=>2.3, 38=>4.5);
$arrData[1] = array(39=>1, 41=>0, 42=>0);
$arrData[2] = array(43=>3.4, 44=>1.2, 45=>3.12);
$arrData[3] = array(46=>2.33, 52=>1.22, 53=>0.9);

然后处理每个元素,并将其转换为单个数组:

代码语言:javascript
运行
复制
$arrNew = array();
foreach($arrData as $data){
    foreach($data as $key=>$rating){
        $arrNew[$key]=$rating;
    }
}

最后,在该数组上执行asort()

代码语言:javascript
运行
复制
print_r($arrNew);
asort($arrNew);
print_r($arrNew);

这是我的测试结果:

代码语言:javascript
运行
复制
Array
(
    [36] => 2.3
    [37] => 2.3
    [38] => 4.5
    [39] => 1
    [41] => 0
    [42] => 0
    [43] => 3.4
    [44] => 1.2
    [45] => 3.12
    [46] => 2.33
    [52] => 1.22
    [53] => 0.9
)
Array
(
    [41] => 0
    [42] => 0
    [53] => 0.9
    [39] => 1
    [44] => 1.2
    [52] => 1.22
    [36] => 2.3
    [37] => 2.3
    [46] => 2.33
    [45] => 3.12
    [43] => 3.4
    [38] => 4.5
)
票数 0
EN

Stack Overflow用户

发布于 2012-01-10 15:14:20

更简洁的解决方案是使用用户定义的排序:

http://php.net/manual/en/function.usort.php

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8799336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档