多维数组如果需要按照某个字段值进行排序,可以尝试array_multisort().但有一个前提,这个字段值的排序是要一定规律的,如字符升序a-z,或者数字降序等等.
$arr = array( array( ‘id‘ => 1, ‘name‘ => ‘tyr‘, ‘size‘ => ‘s‘, ), array( ‘id‘ => 2, ‘name‘ => ‘aaa‘, ‘size‘ => ‘m‘, ), array( ‘id‘ => 3, ‘name‘ => ‘aaa‘, ‘size‘ => ‘xl‘, ), array( ‘id‘ => 4, ‘name‘ => ‘lhf‘, ‘size‘ => ‘l‘, ), array( ‘id‘ => 5, ‘name‘ => ‘sfd‘, ‘size‘ => ‘3xl‘, ),);$size=array(‘xs‘,‘s‘,‘m‘,‘l‘,‘xl‘,‘xxl‘,‘3xl‘);$num=array(2,3,1);function myNum($a,$b){//固定格式,$a,$b表示传入数组的子元素 if($a==$b){ return 0; } return $a>$b?-1:1;//返回-1表示排在前面,返回1则排在后面}usort($num,‘myNum‘);var_dump($num);/*结果如下 array(3) { [0]=> int(3) [1]=> int(2) [2]=> int(1)} */function mySort($a,$b){//固定格式 $size=array(‘xs‘,‘s‘,‘m‘,‘l‘,‘xl‘,‘xxl‘,‘3xl‘); $key1=array_search($a[‘size‘],$size);//获取索引值 $key2=array_search($b[‘size‘],$size); return strnatcmp($key1,$key2);//比较索引值并排序}usort($arr,‘mySort‘);echo ‘<pre>‘;var_dump($arr);/*结果如下array(5) { [0]=> array(3) { ["id"]=> int(1) ["name"]=> string(3) "tyr" ["size"]=> string(1) "s" } [1]=> array(3) { ["id"]=> int(2) ["name"]=> string(3) "aaa" ["size"]=> string(1) "m" } [3]=> array(3) { ["id"]=> int(4) ["name"]=> string(3) "lhf" ["size"]=> string(1) "l" } [2]=> array(3) { ["id"]=> int(3) ["name"]=> string(3) "aaa" ["size"]=> string(2) "xl" } [4]=> array(3) { ["id"]=> int(5) ["name"]=> string(3) "sfd" ["size"]=> string(3) "3xl" }}*/class Mysort{ public function sortFunc($arr){ uasort($arr,array($this,‘mySort‘)); return $arr; } public function mySort($a,$b){//固定格式 $size=array(‘xs‘,‘s‘,‘m‘,‘l‘,‘xl‘,‘xxl‘,‘3xl‘); $key1=array_search($a[‘size‘],$size);//获取索引值 $key2=array_search($b[‘size‘],$size); return strnatcmp($key1,$key2);//比较索引值并排序 }} $arr = array( array( ‘id‘ => 1, ‘name‘ => ‘tyr‘, ‘size‘ => ‘s‘, ), array( ‘id‘ => 2, ‘name‘ => ‘aaa‘, ‘size‘ => ‘m‘, ), array( ‘id‘ => 3, ‘name‘ => ‘aaa‘, ‘size‘ => ‘xl‘, ), array( ‘id‘ => 4, ‘name‘ => ‘lhf‘, ‘size‘ => ‘l‘, ), array( ‘id‘ => 5, ‘name‘ => ‘sfd‘, ‘size‘ => ‘3xl‘, ),);$obj=new Mysort();$res=$obj->sortFunc($arr);原文:http://www.cnblogs.com/kinger/p/4357005.html