$a = array(
array('id'=>1,'data'=>'a'),
array('id'=>3,'data'=>'c'),
array('id'=>2,'data'=>'d')
);
/*
function comp_by_id_desc($a,$b){
if ($a['id']>$b['id'])
return 1;
if ($a['id']<=$b['id'])
return -1;
}
function comp_by_id_ase($a,$b){
if ($a['id']>$b['id'])
return 1;
if ($a['id']<=$b['id'])
return -1;
}
function comp_by_data_desc($a,$b){
if ($a['data']>$b['data'])
return 1;
if ($a['data']<=$b['data'])
return -1;
}
function comp_by_data_ase($a,$b){
if ($a['data']>$b['data'])
return 1;
if ($a['data']<=$b['data'])
return -1;
}
function my_sort(&$arr,$key,$by='desc'){
if($by=='desc'){
usort($arr, 'comp_by_'.$key.'_desc');
}
if($by=='ase'){
usort($arr, 'comp_by_'.$key.'_ase');
}
}
my_sort($a,'data');
var_dump($a);
*/
function my_sort(&$arr,$key,$by='desc'){
$f1 = 'return ($a["'.$key.'"]>$b["'.$key.'"])?1:-1;';
$f2 = 'return ($a["'.$key.'"]>$b["'.$key.'"])?-1:1;';
if($by=='desc'){
$fn=create_function('$a,$b', $f1);
}
if($by=='ase'){
$fn=create_function('$a,$b', $f2);
}
usort($arr, $fn);
}
my_sort($a,'data');
var_dump($a);
?>
两个版本,第二个跟手册上面的思路相比较,有更大的优势。