<?php //一維數組 $test1 = array("a"=>"蘋果","b"=>"香蕉","c"=>"芒果"); //二位數組 $test2[0] = array("id"=>"17","name"=>"汽車"); $test2[99] = array("id"=>"18","name"=>"飛機"); $test2[2] = array("id"=>"19","name"=>"高鐵"); $test2[3] = array("id"=>"20","name"=>"高鐵"); //三維數組 $test3 = array("aaa"=>$test1,"bbb"=>$test2); /* arr:數組 isvalues:是否將數組key值從新排列 */ //數組倒敘 function array_rsort($arr,$isvalues=false) { if(is_array($arr)){ $flag = false; //一維數組 if(count($arr) == count($arr,1)){ $flag = true; $i = 0; //轉換成二維數組 foreach($arr AS $key=>$value){ $a[$i]["okey"] = $key; $a[$i]["value"] = $value; $i++; } $arr = $a; } //多維數組 else { //添加臨時key值 foreach($arr AS $key=>$value){ $value["okey"] = $key; $array[] = $value; } $arr = $array; } //倒敘並還原key值 $count = count($arr)-1; for($i=0;$i<count($arr);$i++){ $b[$arr[$count]["okey"]] = $arr[$count]; $count--; } //重構一維數組 if($flag == true){ foreach($b AS $key=>$value){ if($isvalues){ $c[] = $value["value"]; }else{ $c[$value["okey"]] = $value["value"]; } } } //多維數組去除臨時key值 else { foreach($b AS $key=>$value) { unset($value["okey"]); if($isvalues){ $c[] = $value; }else{ $c[$key] = $value; } } } return $c; } } var_dump(array_rsort($test1)); var_dump(array_rsort($test1,true)); echo "----------------------------------------"; var_dump(array_rsort($test2)); var_dump(array_rsort($test2,true)); echo "----------------------------------------"; var_dump(array_rsort($test3)); var_dump(array_rsort($test3,true)); ?>