2012-01-10 18 views
0

我有一个脚本,其中我有这个领域DId(不自动增量),评级,他们逗号分隔,收视率来自数据库。现在我必须根据评级显示评级和设备的最高5个值。我可以通过rsort方法找到评级的最大值,然后将数组切片到5,但是问题是如何根据评级获得DId。因为当一个数组丢失了数组的原始索引时,这个脚本是基于数据库的,并且设备将根据评分改变,每次评分将被改变。这里我到目前为止做了什么如何根据另一个数组在php

$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

欢迎来到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 
) 
相关问题