二維陣列根據其中某些字段排序的問題

2021-09-24 17:42:16 字數 2719 閱讀 7921

背景:

按照乙個月內學的課程和考試數之和進行排名,若之和相等,按照學習課程數和考試數相差度小的排在前面;

例如:員工1學習課程數10門,考試3門,員工2學習課程數8門,考試5門,之和都是13,但是員工2, 課程數和考試數相差度為3,小於員工1的相差度7,所以,在排行時,員工2排名在前面

主要函式 通過查閱php手冊
//說明:

//array_column() 返回input陣列中鍵值為column_key的列, 如果指定了可選引數index_key,那麼input陣列中的這一列的值將作為返回陣列中對應值的鍵。

array_column (

array

$input

, mixed $column_key

[, mixed $index_key

=null])

:array

//如:

//從結果集中取出last_name列,用相應的id作為鍵值

$last_names

=array_column

($records

,'last_name'

,'id'

);

//說明:

//array_multisort() 可以用來一次對多個陣列進行排序,或者根據某一維或多維對多維陣列進行排序。

//哇,看了php手冊之後突然發現。貌似,不用array_column也可,可能更方便了呢。。。就當多了解乙個函式吧。。。。不虧不虧。。。。。。。

array_multisort (

array

&$array1

[, mixed $array1_sort_order

=sort_asc

[, mixed $array1_sort_flags

=sort_regular

[, mixed $...

]]])

: bool

//這一大串子看的我頭大、不過舉的例子簡單明瞭。這裡不解釋了,直接往下看吧

測試資料
$data

=array

(array

('id'

=>1,

'uid'

=>

'wgg'

,'course_count'

=>7,

'exam_count'

=>5)

,array

('id'

=>2,

'uid'

=>

'sd'

,'course_count'

=>2,

'exam_count'

=>1)

,array

('id'

=>3,

'uid'

=>

'cds'

,'course_count'

=>6,

'exam_count'

=>6)

,array

('id'

=>4,

'uid'

=>

'rev'

,'course_count'

=>4,

'exam_count'

=>2)

,array

('id'

=>5,

'uid'

=>

'ptb'

,'course_count'

=>7,

'exam_count'

=>3)

,array

('id'

=>6,

'uid'

=>

'vgr'

,'course_count'

=>8,

'exam_count'

=>4)

);

獲取列、排序
array_multisort() 需要乙個包含列的陣列,因此先取得列,然後排序

第一種方法

//這個是我最開始不知道怎麼做,然後看了看大家的部落格,參考著實現的

foreach

($data

as$key

=>

$value

)$sum

=array_column

($data

,'sum');

$del

=array_column

($data

,'del');

array_multisort

($sum

,sort_desc

,$del

,sort_asc

,$data

);

第二種方法(推薦)

//這是看過手冊之後,是不是更精簡!!!

$sum

=$del=[

];foreach

($data

as$key

=>

$value

)//按照和按降序排列;若和相等,按相差度公升序排列(相差度小的在前面)

array_multisort

($sum

,sort_desc

,$del

,sort_asc

,$data

);

php PHP二維陣列根據多個字段排序

二維陣列 先根據欄位a排序 如果a一樣通過欄位b排序 如果ab都一樣 就按c欄位排序 思路 1.先蒐集要排序的字段的值分別組合成乙個新的陣列 2.在用array multisort 根據要排序的字段值 按先後進行排序就行 order data 要排序的陣列 sort desc 降序sort asc公...

PHP 二維陣列根據某個字段排序

php view plain copy 二維陣列根據某個字段排序 功能 按照使用者的年齡倒序排序 author ruxing.li header content type text html charset utf 8 arrusers array array id 1,name 張三 age 25...

PHP二維陣列根據某個字段排序

二維陣列根據某個字段排序 功能 按照使用者的年齡倒序排序 author ruxing.li header content type text html charset utf 8 arrusers array array id 1,name 張三 age 25,array id 2,name 李四 ...