Peaceful mind Where there is a will, there is a way!

30May/090

按指定key排序数组

Knowledge view:

  1. sort/rsort:  sort by value and assigns new keys to the elements in array
  2. asort/arsort :  sort by value and maintain index(key) association
  3. ksort/krsort:  sort by key
  4. usort/uasort: usort assigns new keys to the elements in array ,but uasort maintain index(key) association
  5. uksort:  sort by keys using user-defined comparison function
  6. natcasesort/natsort:  sort alphanumeric strings
  7. array_multisort:  Sort multiple or multi-dimensional arrays

实例分析,

[php]

$arr[0]['name'] = 'aaa';

$arr[0]['id'] = 10;

$arr[1]['id'] = 12;

$arr[1]['name'] = 'bbb';

function array_sort_key(array &$array, $key) {

    global $_key;

    if(!function_exists(_array_sort_key_cmp)) {

        function _array_sort_key_cmp($a, $b) {

            global $_key;

            return strcmp($a[$_key], $b[$_key]);

        }

    }

    $_key = $key;

    $result = usort($array, "_array_sort_key_cmp");

    unset($_key);

    return $result;

}[/php]

另外一个例子

[php]$arr["name"][0]="aaa";

$arr["name"][1]="bbb";

$arr["name"][2]="ccc";

$arr["user"][0]="lee";

$arr["user"][1]="zhang";

$arr["user"][1]="chen";

array_multisort($arr['name'],SORT_ASC,SORT_STRING,$arr['usr']);[/php]

这里的意思是首先按照name升序排序,如果排序完后,有相同的value值再以user升序排序。如果对array_multisort不熟悉的,赶快去温习下吧。

Tagged as: , No Comments