php - 通过Value 排序Multidimensional Array

  显示原文与译文双语对照的内容

可能重复:
如何在 PHP 中对多维数组进行排序

如何通过"顺序"键的值对数组进行排序? 即使这些值当前是连续的,它们也不会总是。


Array
(
 [0] => Array
 (
 [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
 [title] => Flower
 [order] => 3
 )

 [1] => Array
 (
 [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
 [title] => Free
 [order] => 2
 )

 [2] => Array
 (
 [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
 [title] => Ready
 [order] => 1
 )
)

时间:

尝试 usort: 如果你还没有访问匿名函数的权限,则必须首先定义排序函数:


function sortByOrder($a, $b) {
 return $a['order'] - $b['order'];
}

usort($myArray, 'sortByOrder');

为 PHP 5.3更新:


usort($myArray, function($a, $b) {
 return $a['order'] - $b['order'];
});


function aasort (&$array, $key) {
 $sorter=array();
 $ret=array();
 reset($array);
 foreach ($array as $ii => $va) {
 $sorter[$ii]=$va[$key];
 }
 asort($sorter);
 foreach ($sorter as $ii => $va) {
 $ret[$ii]=$array[$ii];
 }
 $array=$ret;
}

aasort($your_array,"order");

我使用这个函数:


function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
 $sort_col = array();
 foreach ($arr as $key=> $row) {
 $sort_col[$key] = $row[$col];
 }

 array_multisort($sort_col, $dir, $arr);
}


array_sort_by_column($array, 'order');

我一般都选用 usort,并传递自己的比较函数。 在这种情况下,它很简单:


function compareOrder($a, $b)
{
 return $a['order'] - $b['order'];
}

usort($array, 'compareOrder');


$sort = array();
$array_lowercase = array_map('strtolower', $array_to_be_sorted);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $alphabetically_ordered_array);

这将同时处理大写字母和小写字母。

...