php數組怎麼根據其中的一個值進行排序?解決方法
- 2019 年 10 月 24 日
- 筆記
有一個數組如下
我想對其進行一個排序,按照其“sort”的值的大小進行排序,3->4->7。
解決方法如下:
1、首先介紹php的兩個方法
方法一:array_column() 返回輸入數組中某個單一列的值。php版本 5.5+。
參數 | 描述 |
---|---|
array | 必需。規定要使用的多維數組(記錄集)。 |
column_key |
必需。需要返回值的列。 可以是索引數組的列的整數索引,或者是關聯數組的列的字元串鍵值。 該參數也可以是 NULL,此時將返回整個數組(配合 index_key 參數來重置數組鍵的時候,非常有用)。 |
index_key | 可選。用作返回數組的索引/鍵的列。 |
例子一:
1 $cmf_settings = array( 2 array ( 3 "url" => "img/20191015/5da586020fa6b.jpg", 4 "alt" => "lunbo2", 5 "href" => "https://www.baidu.com/", 6 "sort" => "7" 7 ), 8 array( 9 "url" => "img/20191018/5da9783499dec.jpg", 10 "alt" => "X1300", 11 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html", 12 "sort" => "3" 13 ), 14 array( 15 "url" => "img/20191018/5da987c81f420.jpg", 16 "alt" => "S300", 17 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html", 18 "sort" => "4" 19 ) 20 ); 21 22 $cmf_arr = array_column($cmf_settings, 'sort');
列印$cmf_arr得到如下結果
方法二:array_multisort() 函數返回一個排序數組。您可以輸入一個或多個數組。函數先對第一個數組進行排序,接著是其他數組,如果兩個或多個值相同,它將對下一個數組進行排序。
array_multisort(‘數組1’, ‘SORT_ASC(升序)’, ‘數組2’, ‘數組3’, ‘數組4’, ‘數組5’, ‘數組6’);
數組1:進行排序的數組。
SORT_ASC(升序):是對數組1的排序方式。
‘數組2’, ‘數組3’……:根據數組1的排序方式對’數組2’, ‘數組3’, ‘數組4’, ‘數組5’, ‘數組6’進行排序。
數組1升序排序: 第二組數據[1] => “3” 位置變成[0] => “3”,那麼’數組2′, ‘數組3’, ‘數組4’, ‘數組5’, ‘數組6’的第二組數據[1] => “不管是什麼數據” 位置變成[0] => “不管是什麼數據”。
參數 | 描述 |
---|---|
array1 | 必需。規定數組。 |
sorting order | 可選。規定排列順序。可能的值:
|
sorting type | 可選。規定排序類型。可能的值:
|
array2 | 可選。規定數組。 |
array3 | 可選。規定數組。 |
例子二:
1 $cmf_settings = array( 2 array ( 3 "url" => "img/20191015/5da586020fa6b.jpg", 4 "alt" => "lunbo2", 5 "href" => "https://www.baidu.com/", 6 "sort" => "7" 7 ), 8 array( 9 "url" => "img/20191018/5da9783499dec.jpg", 10 "alt" => "X1300", 11 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/x1300-180.html", 12 "sort" => "3" 13 ), 14 array( 15 "url" => "img/20191018/5da987c81f420.jpg", 16 "alt" => "S300", 17 "href" => "https://www.baidu.com/fully-automatic-pallet-wrappin/s300-170.html", 18 "sort" => "4" 19 ) 20 ); 22 $cmf_arr = array_column($cmf_settings, 'sort'); 24 array_multisort($cmf_arr, SORT_ASC, $cmf_settings);
列印$cmf_settings得到如下結果,滿足需求。
總結:利用 array_column() 把要排序的鍵值提取出來,在利用array_multisort()對數組進行排序。理解起來有點繞,不過以後的用處會很大的。
如有錯誤請指出,謝謝。