print_r ($items) will output:
Array(
[36] => Array
(
[id] => 36
[name] => mp4
[total_items] => 58
[rel] => 5.3015
)
[61] => Array
(
[id] => 61
[name] => mp3
[total_items] => 61
[rel] => 21.7269
)
[63] => Array
(
[id] => 63
[name] => avi
[total_items] => 43
[rel] => 2.254
)
)
我需要:先[61]秒[36]然后[63]
谢谢!
答案 0 :(得分:2)
以下是我使用的内容:
function array_sort(&$array, $on, $order=SORT_ASC)
{
$new_array = array();
$sortable_array = array();
if (count($array) > 0) {
foreach ($array as $k => $v) {
if (is_array($v)) {
foreach ($v as $k2 => $v2) {
if ($k2 == $on) {
$sortable_array[$k] = $v2;
}
}
} else {
$sortable_array[$k] = $v;
}
}
switch ($order) {
case SORT_ASC:
asort($sortable_array);
break;
case SORT_DESC:
arsort($sortable_array);
break;
}
foreach ($sortable_array as $k => $v) {
$new_array[$k] = $array[$k];
}
}
return $new_array;
}
所以你会像这样使用它:
array_sort($items, 'rel');
答案 1 :(得分:2)
有一个功能,它被称为uasort。
请参阅usort文档中的第一个和第二个示例并对其进行修改,可能是这样的:
function cmp($a, $b)
{
if ($a['rel'] == $b['rel']) {
return 0;
}
return ($a['rel'] < $b['rel']) ? -1 : 1;
}
uasort($your_array, "cmp");
有帮助吗?
修改强>
此外,如果您的PHP版本高于5.3,则可以使用closures:
uasort($your_array, function($a, $b){
if ($a['rel'] == $b['rel']) {
return 0;
}
return ($a['rel'] < $b['rel']) ? -1 : 1;
});
<强> EDIT2:强>
我犯了一个错误:usort()
用于排序而不保持关键关联(请参阅more info),uasort()
函数就是您所需要的。我已经纠正了上面的例子。
答案 2 :(得分:1)
$rel = array();
foreach ( $items as $key => $value )
{
$rel[$key] = $value['rel'];
}
array_multisort($rel, SORT_ASC, $items);
答案 3 :(得分:0)
尝试usort()
,编写自己的小回调比较函数。