首頁 >後端開發 >php教程 >PHP 中如何使用自訂比較函數對陣列進行排序,並保留鍵名?

PHP 中如何使用自訂比較函數對陣列進行排序,並保留鍵名?

WBOY
WBOY原創
2024-05-04 11:51:01554瀏覽

PHP 中使用自訂比較函數可以對陣列進行排序,並保留鍵名。為了做到這一點,可以使用 usort() 函數,它需要一個陣列和一個回呼函數作為參數。回呼函數接收兩個陣列元素,傳回一個整數 (-1、0 或 1) 來指示排序順序。

PHP 中如何使用自定义比较函数对数组进行排序,并保留键名?

PHP 中使用自訂比較函數對陣列進行排序,並保留鍵名

使用自訂比較函數對陣列進行排序是在陣列運算中的常用操作。在 PHP 中,可以使用 usort() 函數輕鬆實現此目的。

語法

usort(array, callable)
  • array:要排序的陣列。
  • callable:用來比較陣列元素的回呼函數。它必須接受兩個參數(兩個陣列元素),並傳回一個整數(-1、0 或 1)。

實戰案例

以下範例展示如何使用自訂比較函數對數組中的鍵名進行排序,同時保留鍵名:

<?php

// 待排序的数组
$arr = [
    'a' => 10,
    'c' => 5,
    'b' => 20,
];

// 自定义比较函数
$compare = function ($a, $b) {
    return strcmp($a['key'], $b['key']);
};

usort($arr, $compare);

// 输出排序后的数组
print_r($arr);

在這個在例子中,compare 函數將兩個鍵名($a['key']$b['key'])作為參數,並使用strcmp() 函數對其進行比較。 strcmp() 函數傳回 -1、0 或 1,指示第一個字串是否小於、等於或大於第二個字串。

當呼叫 usort() 函數時,它將指定的比較函數套用到 $arr 陣列中的每個元素。如果 compare 函數傳回 -1,則第一個元素將排在第二個元素之前;如果傳回 1,則反之;如果傳回 0,則元素的順序保持不變。

最終輸出為:

Array
(
    [a] => 10
    [b] => 20
    [c] => 5
)

陣列依照鍵名從小到大排序,同時保留了鍵名。

以上是PHP 中如何使用自訂比較函數對陣列進行排序,並保留鍵名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn