寫乙個二維陣列排序演算法

2021-07-25 04:38:55 字數 1310 閱讀 1475

下面給出兩種方法實現二維陣列排序

方法一:使用asort和arsort函式

/*

* @param array $arr 要排序的陣列

* @param string $keys 需要排序的鍵名

* @param string $order 排序規則,0-公升序、1-降序

* return array $new_arr 排序好的陣列

*/function array_sort($arr,$keys,$order=0)

// 初始化乙個空陣列,用來收集陣列中所要排序的鍵名所對應的值和該鍵名所屬陣列的索引號

$keyvalue = array();

foreach($arr as $key=>$val)

// 進行排序,0為公升序,1為降序

if($order == 0) else

// 排好序之後,這時的鍵名和對應的值,就是排好的順序,只需根據鍵名對傳過來的陣列重新排序就行了

reset($keyvalue);

foreach($keyvalue as $key=>$val)

// 初始化乙個陣列,用於存放新順序的單元

$new_arr = array();

foreach($keysort as $key=>$val)

return $new_arr;

}$person=array(

array('id'=>2,'name'=>'zhangsan','age'=>23),

array('id'=>5,'name'=>'lisi','age'=>28),

);$result = array_sort($person,'name',0);

var_dump($result);

方法二:使用array_multisort函式

引數資訊同上:

function multisort($arr,$key,$order=0) 

if($order == 0) else

array_multisort($sort_arr,$form,$arr);

return $arr;

}$person=array(

array('id'=>2,'name'=>'zhangsan','age'=>23),

array('id'=>5,'name'=>'lisi','age'=>28),

);$result = multisort($person,'name',0);

var_dump($result);

乙個二維陣列的排序

一維陣列的補充 foreach 使用foreach迴圈遍歷陣列和集合元素時,無須獲得陣列和 集合的長度,無須根據索引來訪問陣列元素和集合元素,系統自動遍 歷陣列和集合的每個元素。for string name names 等同於for int i 0 i 多編寫時候的麻煩。老師講完這個後自己寫了乙個...

乙個PHP二維陣列排序的函式

分享乙個php二維陣列排序的函式 functionarray sort arr,keys,type asc if type asc else reset keysvalue foreach keysvalueas k v return new array 函式的三個引數說明 arr 要排序的陣列 k...

PHP陣列排序,一維陣列,二維陣列排序。

一維陣列排序 1 sort,rsort排序 r reverse表示翻轉,即為降序排列 通過鍵值排序。arr array 10,2,4,1,5,8,7,9 等效於 arr array 0 10,1 2,2 4,3 1,4 5,5 8,6 7,7 9 預設的排序,按鍵值公升序排序,鍵名被從新規定,例如1...