碎碎念

跳到主文

murmur

部落格全站分類:財經政論

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 3月 08 週四 201809:56
  • [PHP] usort() 自訂排序

最近碰到需要依照陣列中某個元素來做排序,使用一般的sort都無法滿足

找到usort這個function,可以自訂排序方式。

 

定义和用法

usort() 通过用户自定义的比较函数对数组进行排序。

语法

usort(array,myfunction);
参数描述
array 必需。规定要进行排序的数组。
myfunction 可选。定义可调用比较函数的字符串。如果第一个参数小于等于或大于第二个参数,那么比较函数必须返回一个小于等于或大于 0 的整数。

说明

usort() 函数使用用户自定义的函数对数组排序。

注释:如果两个元素比较结果相同,则它们在排序后的数组中的顺序未经定义。到 PHP 4.0.6 之前,用户自定义函数将保留这些元素的原有顺序。但是由于在 4.1.0 中引进了新的排序算法,结果将不是这样了,因为对此没有一个有效的解决方案。

注释:本函数为 array 中的元素赋予新的键名。这会删除原有的键名。

 

--

範例如下

 

Example #2 usort() example using multi-dimensional array

<?php
function cmp(a, b)
{
    return 
strcmp(a["fruit"], b["fruit"]);
}

fruits[0]["fruit"] = "lemons";
fruits[1]["fruit"] = "apples";
fruits[2]["fruit"] = "grapes";

usort(fruits, "cmp");

while (list(
key, value) = each(fruits)) {
    echo 
"\fruits[key]: " . value["fruit"] . "\n";
}
?>
语法
strcmp(string1,string2)
参数 描述
string1 必需。规定要比较的第一个字符串。
string2 必需。规定要比较的第二个字符串。
技术细节
返回值:
本函数返回:

0 - 如果两个字符串相等
<0 - 如果 string1 小于 string2
>0 - 如果 string1 大于 string2
PHP 版本: 4+

When sorting a multi-dimensional array, a and b contain references to the first index of the array.

The above example will output:

fruits[0]: apples
fruits[1]: grapes
fruits[2]: lemons

 

 --

PHP 5.3之後可以使用暱名函式,可以寫成這樣:

Starting in PHP 5.3, you can use an anonymous function:

 

usort(myArray, function(a, b) {
 return a['order'] - b['order'];
});

 

--

參考自 

https://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value

http://www.w3school.com.cn/php/func_array_usort.asp

http://php.net/manual/en/function.usort.php

 

--

--

文章標籤
全站熱搜
創作者介紹
創作者 dizzy03 的頭像
dizzy03

碎碎念

dizzy03 發表在 痞客邦 留言(0) 人氣(0)

  • 全站分類:
  • 個人分類:Programming
▲top

熱門文章

  • ()[Telegram][轉] 一鍵解除iOS版Telegram對群組和頻道的限制/蘋果iPhone有些頻道不顯示問題
  • ()[Chrome] [問題] Google Chrome 瀏覽FB超lag...問題原來在AD-block
  • ()[Windows] 視窗最大化後發生視窗頂部或最下方出現黑色/白色/灰色空間
  • ()[Windows][轉] 教你從 Windows 11 23H2 升級至 24H2 後降級回去,並鎖住版本
  • ()[轉] 修復:谷歌瀏覽器錯誤'err_quic_protocol_error'
  • ()國光號 中興號座位表
  • ()[轉] 檢視自已的交易信念 by comewish
  • ()[轉]【軟體】Office 2019 專業增強版繁體中文版下載、免費永久啟用完整教學
  • ()[Word] Word「第幾頁,共幾頁」選項怎麼不見了? 其實在這裡啦
  • ()[轉] 5 個免費 Bilibili 影片下載免安装線上工具推薦!

文章精選

文章搜尋

誰來我家

參觀人氣

  • 本日人氣:0
  • 累積人氣:17,692
dizzy03
PIXNET Logo登入