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" } } */