php數組怎么根據其中的一個值進行排序?解決方法


有一個數組如下

 

 我想對其進行一個排序,按照其“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 可選。規定排列順序。可能的值:
  • SORT_ASC - 默認。按升序排列 (A-Z)。
  • SORT_DESC - 按降序排列 (Z-A)。
sorting type 可選。規定排序類型。可能的值:
  • SORT_REGULAR - 默認。把每一項按常規順序排列(Standard ASCII,不改變類型)。
  • SORT_NUMERIC - 把每一項作為數字來處理。
  • SORT_STRING - 把每一項作為字符串來處理。
  • SORT_LOCALE_STRING - 把每一項作為字符串來處理,基於當前區域設置(可通過 setlocale() 進行更改)。
  • SORT_NATURAL - 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。
  • SORT_FLAG_CASE - 可以結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區分大小寫。
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()對數組進行排序。理解起來有點繞,不過以后的用處會很大的。

如有錯誤請指出,謝謝。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM