function sort_with_keyName($arr,$orderby='desc'){ //在内存的另一处 $a 复制内容与 $arr 一样的数组 foreach($arr as $key => $value) $a[$key]=$value; if($orderby== 'asc'){//对数组 $arr 进行排序 asort($arr); }else{ arsort($arr); } /*创建一个以原始数组的键名为元素值 (键值) 的 *数组 $b, 其元素 (键值) 顺序,与排好序的数组 $arr 一致。 */ $index=0; foreach ($arr as $keys => $values) //按排序后数组的顺序 foreach($a as $key => $value) //在备份数组中寻找键值 if ($values==$value)//如果找到键值 $b[$index++]=$key; // 则将数组 $b 的元素值,设置成备份数组 $a 的键名 //返回用数组 $b 的键值作为键名,数组 $arr 的键值作为键值,所组成的数组 return array_combine($b, $arr); }
$arr = array('AA'=>3,'AB'=>1,'AC'=>2);
排序 123 保留 AA,AB,AC
private function sort_with_keyName($arr,$orderby='desc'){ $new_array = array(); $new_sort = array(); foreach($arr as $key => $value){ $new_array[] = $value; } if($orderby=='asc'){ asort($new_array); }else{ arsort($new_array); } foreach($new_array as $k => $v){ foreach($arr as $key => $value){ if($v==$value){ $new_sort[$key] = $value; unset($arr[$key]); break; } } } return $new_sort; }