2011-03-04 230 views
0

我有一个脚本可以从数据库中获取一些值。在PHP中对数组进行排序

在瓦尔的结构如下所示:

$dump["likes"] = 1234; 
$likes["data"][$i]["name"] = "ABCDEFG"; 

for($i=0;$i<=$max;$i++){ 
    $data[$i]["likes"] = $dump["likes"]; 
    $data[$i]["name"] = $likes["data"][$i]["name"]; 

} 

//Print sorted array here (highest value in "like" first) 

我只是需要一种方法来找出哪个条目最大的“喜欢”是:)

到目前为止,我已经尝试在array_multisort ,但它显示我“不一致的大小”或一些错误...

感谢您的帮助!

编辑:

当我结束循环之外打印($数据),它看起来像这样:

Array ([0] => Array ([likes] => 3485109 [name] => Google) [1] => Array ([likes] => 78535 [name] => Youtube) [2] => Array ([likes] => 2433041 [name] => Bing)) 

我想有一个这样的数组:

Array ([0] => Array ([likes] => 3485109 [name] => Google) [1] => Array ([likes] => 2433041 [name] => Bing) [2] => Array ([likes] => 78535 [name] => Youtube)) 

//Sorted by "likes" 
+0

请始终引用确切的错误消息,以便人们可以帮助您。 – 2011-03-04 23:24:58

+3

我建议使用“ORDER BY”在数据库查询中进行排序,它更简单,更干净,可能更快! – sled 2011-03-04 23:27:49

+0

这是不可能的,因为$ dump [“likes”]实际上并不在数据库中,但是从外部站点拉出来...请检查编辑以获取有关阵列结构的更多信息... – DonCroce 2011-03-04 23:30:03

回答

2

这应该是关键

function cmp($a, $b){ 
    if ($a['likes']>$b['likes']) 
    return 1; 
    else if ($a['likes']<$b['likes']) 
    return -1; 
    else return 0; 
} 
usort($data, 'cmp'); 
+0

一个字,伟大: )感谢Ivan的帮助! – DonCroce 2011-03-04 23:43:25