在 PHP 程式設計中,我們常常需要對陣列進行排序運算。 PHP 提供了許多陣列排序函數,如 sort()、asort()、ksort() 等等,它們分別以不同的方式對陣列元素進行排序。但是,這些函數預設都會改變數組鍵名的順序。如果我們想要保留數組鍵名的順序,該怎麼做呢?本文將為您介紹一些方法。
- 使用uksort() 函數
uksort() 函數是PHP 中一個非常強大的函數,它允許我們自己定義排序函數,並按照我們的方法對數組進行排序。 uksort() 函數的用法如下:
bool uksort(array &$array, callable $cmp_function)
其中,$array 為要排序的數組,$cmp_function 為自訂排序函數。
在自訂排序函數中,我們可以使用 $a 和 $b 兩個參數來比較兩個陣列元素,並傳回排序結果。如果 $a 在 $b 前面,則傳回小於 0 的整數;如果 $a 在 $b 後面,則傳回大於 0 的整數;如果 $a 和 $b 相等,則傳回 0。
下面是一個範例程式碼:
<?php function my_sort($a, $b) { if ($a == $b) { return 0; } return ($a > $b) ? 1 : -1; } $array = array( 'c' => 1, 'a' => 2, 'b' => 3, ); uksort($array, 'my_sort'); print_r($array); ?>
上述程式碼會輸出:
Array ( [c] => 1 [a] => 2 [b] => 3 )
可以看到,陣列元素的鍵名沒有改變。其中,my_sort() 函數根據鍵名的大小關係進行比較。
- 使用 ksort() 函數並儲存鍵名
ksort() 函數是 PHP 中一個常用的按鍵名排序的函數。與 sort() 和 asort() 不同,ksort() 只會改變陣列元素的順序而不會修改鍵名。
但是,我們也可以透過一些技巧來保存原來的鍵名。具體方法是:先將鍵名和對應的值存入一個新的陣列中,然後對新數組進行排序,最後再將排好序的值重新賦給原數組。範例程式碼如下:
<?php $array = array( 'c' => 1, 'a' => 2, 'b' => 3, ); $tmp_array = array(); foreach ($array as $key => $value) { $tmp_array[$key] = $value; } ksort($tmp_array); $new_array = array(); foreach ($tmp_array as $key => $value) { $new_array[$key] = $value; } $array = $new_array; print_r($array); ?>
上述程式碼會輸出:
Array ( [c] => 1 [a] => 2 [b] => 3 )
可以看到,陣列元素的鍵名沒有改變。但是,這種方法需要使用額外的陣列來保存原來的鍵名,如果數組元素數量很大,可能會導致記憶體問題。
- 使用asort() 函數並儲存鍵名
與ksort() 類似,asort() 函數也可以依照值來排序,但也會改變陣列元素的順序。
同樣,我們也可以透過一些技巧來保存原來的鍵名。具體方法是:先將鍵名和對應的值存入一個新的陣列中,然後對新數組進行排序,最後再將排好序的值重新賦給原數組。範例程式碼如下:
<?php $array = array( 'c' => 1, 'a' => 2, 'b' => 3, ); $tmp_array = array(); foreach ($array as $key => $value) { $tmp_array[$key] = $value; } asort($tmp_array); $new_array = array(); foreach ($tmp_array as $key => $value) { $new_array[$key] = $value; } $array = $new_array; print_r($array); ?>
上述程式碼會輸出:
Array ( [c] => 1 [a] => 2 [b] => 3 )
可以看到,陣列元素的鍵名沒有改變。同樣,這種方法也需要使用額外的陣列來保存原始的鍵名,可能會導致記憶體問題。
綜上所述,以上三種方法都可以保留陣列鍵名的順序,可以依照具體情況進行選擇。但是要注意的是,如果數組中有重複的鍵名,那麼排序後可能會導致鍵名的缺失,需要根據具體情況進行處理。
以上是php 陣列排序鍵名稱不變的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版