ArrayIterator::uasort()
函式用於根據值對陣列進行自定義排序,保留鍵值關聯。這個函式會改變原始陣列。
用法:
ArrayIterator::uasort( array $array, callable $callback ): bool
引數:
$array
:要排序的陣列。$callback
:自定義排序的回撥函式,該函式接受兩個引數,比較兩個陣列元素的值並返回排序結果。
返回值:
- 函式執行成功時返回
true
,否則返回false
。
示例: 假設有以下陣列需要根據值進行排序:
$fruits = array(
"apple" => "red",
"banana" => "yellow",
"orange" => "orange",
"grape" => "purple"
);
下面是一個使用 ArrayIterator::uasort()
的示例:
// 自定義排序函式,根據值的長度進行升序排序
function sortByLength($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
}
return (strlen($a) < strlen($b)) ? -1 : 1;
}
// 使用 ArrayIterator::uasort() 對陣列進行排序
$iterator = new ArrayIterator($fruits);
$iterator->uasort('sortByLength');
// 輸出排序後的結果
foreach ($iterator as $key => $value) {
echo "<p>$key: $value</p>";
}
輸出結果:
<p>grape: purple</p>
<p>apple: red</p>
<p>banana: yellow</p>
<p>orange: orange</p>
在上面的示例中,我們定義了一個自定義排序函式 sortByLength($a, $b)
,該函式按字串長度升序排序。然後使用 ArrayIterator::uasort()
方法根據值的長度對 $fruits
陣列進行排序。最後,使用 foreach
迴圈遍歷排序後的陣列,並將鍵值對以 <p>
標籤包裹輸出。
請注意,ArrayIterator::uasort()
方法會改變原始陣列的順序,不返回新的排序後的陣列。