PHP函数usort例子

usort可以根据自定义函数排序, 官网例子:

<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

$a = array(3, 2, 5, 6, 1);

usort($a, "cmp");
var_dump($a);
// output:
/*
array(5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(5)
  [4]=>
  int(6)
}
*/
?>

 

按照用回自定义的顺序排序:

<?php
function cmp($a, $b) {
    $order = array(1,3,2,5,4);

    $keya = array_search($a['STATUS'], $order);
    $keyb = array_search($b['STATUS'], $order);

    if($keya === false) 
            return -1;

    if($keyb === false)
            return 1;

    if($keya === $keyb) 
            return 0;

    return ($keya > $keyb) ? 1 : -1;
}

$array = 
    array(
        array('ITEMCODE'=>73691650,'STATUS'=>'1'),
        array('ITEMCODE'=>73691651,'STATUS'=>'2'),
        array('ITEMCODE'=>73691652,'STATUS'=>'3'),
        array('ITEMCODE'=>73691653,'STATUS'=>'3'),
        array('ITEMCODE'=>73691654,'STATUS'=>'4'),
        array('ITEMCODE'=>73691655,'STATUS'=>'2'),
        array('ITEMCODE'=>73691656,'STATUS'=>'5'),
        array('ITEMCODE'=>73691657,'STATUS'=>'2'),
);

usort($array, 'cmp');
var_dump($array);
// output:
/*
array(8) {
  [0]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691650)
    ["STATUS"]=>
    string(1) "1"
  }
  [1]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691652)
    ["STATUS"]=>
    string(1) "3"
  }
  [2]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691653)
    ["STATUS"]=>
    string(1) "3"
  }
  [3]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691657)
    ["STATUS"]=>
    string(1) "2"
  }
  [4]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691651)
    ["STATUS"]=>
    string(1) "2"
  }
  [5]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691655)
    ["STATUS"]=>
    string(1) "2"
  }
  [6]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691656)
    ["STATUS"]=>
    string(1) "5"
  }
  [7]=>
  array(2) {
    ["ITEMCODE"]=>
    int(73691654)
    ["STATUS"]=>
    string(1) "4"
  }
}
*/
posted on 2012-05-24 12:44  DavidYanXW  阅读(539)  评论(0)    收藏  举报