」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 PHP 中根據特定鍵對多維數組進行自訂排序?

如何在 PHP 中根據特定鍵對多維數組進行自訂排序?

發佈於2024-11-08
瀏覽:644

How to Custom Sort Multidimensional Arrays Based on a Specific Key in PHP?

多維數組的自訂排序

對多維數組進行排序是程式設計中的常見任務。本文示範如何使用 PHP usort() 函數根據特定鍵對此類陣列進行排序。

理解任務

考慮以下多維數組,其中每個元素代表一條記錄:

Array (
    [0] => Array
        (
            [iid] => 1
            [invitee] => 174
            [nid] => 324343
            [showtime] => 2010-05-09 15:15:00
            [location] => 13
            [status] => 1
            [created] => 2010-05-09 15:05:00
            [updated] => 2010-05-09 16:24:00
        )

    [1] => Array
        (
            [iid] => 1
            [invitee] => 220
            [nid] => 21232
            [showtime] => 2010-05-09 15:15:00
            [location] => 12
            [status] => 0
            [created] => 2010-05-10 18:11:00
            [updated] => 2010-05-10 18:11:00
        ))

按鍵排序

要按「status」鍵對此數組進行排序,我們需要定義一個比較函數來決定元素的順序。

function cmp($a, $b) {
    if ($a['status'] == $b['status']) {
        return 0;
    }
    return ($a['status'] 

此函數比較兩個元素的「狀態」值。如果值相等,則傳回 0。如果第一個元素的「狀態」值低於第二個元素的「狀態」值,則傳回 -1。否則,它返回 1。

使用usort()

我們現在可以使用usort() 函數使用我們的比較函數對數組進行排序:

usort($array, "cmp");

這將根據「狀態」鍵。修改後的陣列將相應地重新排列其元素。

自訂比較

可以自訂比較函數以根據任意鍵對陣列進行排序。只需修改函數即可比較所需的鍵值。這提供了根據不同標準對多維數組進行排序的靈活性。

版本聲明 本文轉載於:1729422140如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • ReqWeb新版本即將發布:期待的功能更新
    ReqWeb新版本即將發布:期待的功能更新
    當我開始開發reqweb時,我的目標很簡單:創建一個強大的,輕巧的Web應用程序防火牆(WAF),任何人都可以用來保護其Web應用程序。隨著時間的流逝,它已成長為可靠的解決方案,應對IP過濾,速率限制,基於規則的阻塞以及通過實時警報進行記錄等挑戰。現在,下一個大型飛躍是Reqweb 2.0即將到來...
    程式設計 發佈於2025-04-18
  • 如何解決Python腳本中的“非ASCII字符”錯誤?
    如何解決Python腳本中的“非ASCII字符”錯誤?
    "Non-ASCII Characters" Errors in Python ScriptsWhen working with text that contains non-ASCII characters in Python, errors like "Syntax...
    程式設計 發佈於2025-04-18
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    在使用GO MOD時,在GO MOD 中克服模塊路徑差異時,可能會遇到衝突,其中3個Party Package將另一個PAXPANCE帶有導入式套件之間的另一個軟件包,並在導入式套件之間導入另一個軟件包。如迴聲消息所證明的那樣: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    程式設計 發佈於2025-04-18
  • 左連接為何在右表WHERE子句過濾時像內連接?
    左連接為何在右表WHERE子句過濾時像內連接?
    左JOIN CONUNDRUM:WITCHING小時在數據庫Wizard的領域中變成內在的加入很有趣,當將c.foobar條件放置在上面的Where子句中時,據說左聯接似乎會轉換為內部連接。僅當滿足A.Foo和C.Foobar標準時,才會返回結果。 為什麼要變形?關鍵在於其中的子句。當左聯接的右側...
    程式設計 發佈於2025-04-18
  • 哪種在JavaScript中聲明多個變量的方法更可維護?
    哪種在JavaScript中聲明多個變量的方法更可維護?
    在JavaScript中聲明多個變量:探索兩個方法在JavaScript中,開發人員經常遇到需要聲明多個變量的需要。對此的兩種常見方法是:在單獨的行上聲明每個變量: 當涉及性能時,這兩種方法本質上都是等效的。但是,可維護性可能會有所不同。 第一個方法被認為更易於維護。每個聲明都是其自己的語句,使...
    程式設計 發佈於2025-04-18
  • Flexbox中邊距與標準CSS佈局的區別
    Flexbox中邊距與標準CSS佈局的區別
    在flexbox 問題:non-flexbox vs. flexbox margins According to the CSS Box Model specification:"A flex container establishes a new flex formatting...
    程式設計 發佈於2025-04-18
  • LINQ方法中哪些保持數組順序,哪些不保持?
    LINQ方法中哪些保持數組順序,哪些不保持?
    LINQ 與數組順序:詳解哪些方法保持順序,哪些方法不保持 在對已排序數組使用 LINQ to Objects 操作時,務必注意避免破壞原始數組順序的操作。以下分析將為您提供指導: 絕對保持順序的方法: AsEnumerable: Cast: Concat: Select: ToArray: To...
    程式設計 發佈於2025-04-18
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python import codecs import codecs import codecs 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有...
    程式設計 發佈於2025-04-18
  • 我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    我可以將加密從McRypt遷移到OpenSSL,並使用OpenSSL遷移MCRYPT加密數據?
    將我的加密庫從mcrypt升級到openssl 問題:是否可以將我的加密庫從McRypt升級到OpenSSL?如果是這樣,如何? 答案:是的,可以將您的Encryption庫從McRypt升級到OpenSSL。 可以使用openssl。 附加說明: [openssl_decrypt()函數要求...
    程式設計 發佈於2025-04-18
  • 如何高效地在一個事務中插入數據到多個MySQL表?
    如何高效地在一個事務中插入數據到多個MySQL表?
    mySQL插入到多個表中,該數據可能會產生意外的結果。雖然似乎有多個查詢可以解決問題,但將從用戶表的自動信息ID與配置文件表的手動用戶ID相關聯提出了挑戰。 使用Transactions和last_insert_id() 插入用戶(用戶名,密碼)值('test','tes...
    程式設計 發佈於2025-04-18
  • 如何從Google API中檢索最新的jQuery庫?
    如何從Google API中檢索最新的jQuery庫?
    從Google APIS 問題中提供的jQuery URL是版本1.2.6。對於檢索最新版本,以前有一種使用特定版本編號的替代方法,它是使用以下語法:獲取最新版本:未壓縮)While these legacy URLs still remain in use, it is recommended ...
    程式設計 發佈於2025-04-18
  • 在Python中如何創建動態變量?
    在Python中如何創建動態變量?
    在Python 中,動態創建變量的功能可以是一種強大的工具,尤其是在使用複雜的數據結構或算法時,Dynamic Variable Creation的動態變量創建。 Python提供了幾種創造性的方法來實現這一目標。 利用dictionaries 一種有效的方法是利用字典。字典允許您動態創建密鑰並...
    程式設計 發佈於2025-04-18
  • CSS強類型語言解析
    CSS強類型語言解析
    您可以通过其强度或弱输入的方式对编程语言进行分类的方式之一。在这里,“键入”意味着是否在编译时已知变量。一个例子是一个场景,将整数(1)添加到包含整数(“ 1”)的字符串: result = 1 "1";包含整数的字符串可能是由带有许多运动部件的复杂逻辑套件无意间生成的。它也可以是故意从单个真理...
    程式設計 發佈於2025-04-18
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 $("#map").css({ margin...
    程式設計 發佈於2025-04-18
  • CSS選擇器排除特定類名方法
    CSS選擇器排除特定類名方法
    在CSS選擇器中排除特定的類名,在某些實例中,您可能需要將特定的類名為選擇器中的特定類名為。當您想將樣式應用於多個元素時,這一點特別有用,但是某些元素不應繼承這些樣式。 一個常見的方案涉及排除具有特定類名稱的元素,同時將樣式應用於具有其他類名稱的元素。讓我們考慮以下示例: 設計 態 ...
    程式設計 發佈於2025-04-18

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3