大家好,
我有一个类似
的数组<?php
$data[] = array('id' => 67, 'hits' => 2);
$data[] = array('id' => 86, 'hits' => 1);
$data[] = array('id' => 85, 'hits' => 6);
$data[] = array('id' => 98, 'hits' => 2);
$data[] = array('id' => 89, 'hits' => 6);
$data[] = array('id' => 65, 'hits' => 7);
?>
我想在sort
的基础上hits
这个数组。
请建议一些帮助我的代码......
提前致谢
答案 0 :(得分:2)
答案 1 :(得分:2)
您需要usort()函数 - 允许您指定自定义比较函数。请参阅http://php.net/manual/en/function.usort.php。
比较功能可以是例如 function cmp($ a,$ b) { 返回strcasecmp($ a ['edition'],$ b ['edition']); }
答案 2 :(得分:1)
usort()
具有以下比较功能:
function cmpHits($a, $b) {
return $a['hits'] - $b['hits'];
}
(未经测试,uasort()
如果您想维护关键关联。)
答案 3 :(得分:-1)
试试这个:
array_multi_sort($data, array('edition'=>SORT_DESC));
function array_multi_sort($array, $cols)
{
$colarr = array();
foreach($cols as $col => $order)
{
$colarr[$col] = array();
foreach ($array as $k => $row)
{
$colarr[$col]['_'.$k] = strtolower($row[$col]);
}
}
$eval = 'array_multisort(';
foreach($cols as $col => $order)
{
$eval .= '$colarr[\''.$col.'\'],'.$order.',';
}
$eval = substr($eval,0,-1).');';
eval($eval);
$ret = array();
foreach($colarr as $col => $arr)
{
foreach($arr as $k => $v)
{
$k = substr($k,1);
if (!isset($ret[$k])) $ret[$k] = $array[$k];
$ret[$k][$col] = $array[$k][$col];
}
}
return $ret;
}