我有一个脚本,其中我有这个字段DId(不是自动增量),评级,它们是逗号分隔,评级来自数据库。现在我必须根据ratings.i显示最高5个额定值和设备值。我可以通过rsort方法找到评级的最大值,然后将数组切成5,但问题是如何根据评级获得DId。因为当rsort数组我丢失了该数组的原始索引,并且此脚本基于数据库,并且每次评级都将根据评级更改设备。这里到目前为止我做了什么
$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
答案 0 :(得分:0)
欢迎来到SO!
在您的情况下,我会解析数据并将其提供给变量,如下所示:
$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);
然后处理每个元素并将其转换为单个数组:
$arrNew = array();
foreach($arrData as $data){
foreach($data as $key=>$rating){
$arrNew[$key]=$rating;
}
}
最后,在该阵列上执行asort()
。
print_r($arrNew);
asort($arrNew);
print_r($arrNew);
这是我的测试结果:
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
)
答案 1 :(得分:0)
更清洁的解决方案是使用用户定义的排序: