記錄一些曾經遇過的數字和排序問題,給自己看。
數字
- 大多時候遇到的數字都是正整數,不需要特別處理。(耶~)
- 加上千分位符號,例如 1,234,567 。用
number_format()
可以處理。 - 四捨五入到某一位,例如 1234567 四捨五入到萬,變成 1230000 。用
round()
可以處理。類似的狀況有無條件進位/無條件捨去,對應的是floor()
和ceil()
。 - 取百分比,通常搭配四捨五入使用。要注意的例外是被除數為 0 的情況, php 會噴 warning , js 會變成
Infinity
或NaN
。 - 忽略正負值。用
abs()
取絕對值即可。 - 轉成純字串。例如手機號碼是 09 開頭,沒轉成字串的話就會變成 9 開頭的九位數。
- 除以 1024 的倍數,通常是轉成 KB MB GB ... 等單位用的。
- 除以 1000 的倍數,通常是轉成 K M G ... 等單位用的。
- 除以 10000 的倍數,通常是數字太大時才會用到的。
- 像超商折扣那樣的五捨六入。遇到時只能自己寫 function 了… orz
排序
- 照某種既有的規定排序。這最常遇到,例如要把淡水信義線的捷運站列出來,不是淡水→紅樹林→…→象山,就是象山→台北101/世貿→…→淡水;雖然捷運站本身有代號,不過有些站用代號排只會一團混亂,例如迴龍 O59 →丹鳳 O60 →輔大 O1 →… ,用一般的排序方式沒辦法把 59 和 60 排在 1 前面。最後是把指定的順序丟進一個 array 裡,把 array key 寫成排序值。
- 照英文字母由 A 到 Z 排序。通常又可以細分為忽略大小寫,大寫在小寫前面,小寫在大寫前面三種。最常用的就是忽略大小寫的排序,把要排序的字串用
strtolower()
處理過,丟進一個 array 裡然後再利用sort()
家族解決。 - 照數值由少到多或由多到少排序。
- 照資料的時間值新到舊或舊到新排序。
- 由北到南或由西向東排序。如果是實際地理座標的話,就用 GPS WGS84 解決。
- 照資料的長度排序。只遇過一次,還是在 MySQL 遇到的,用
ORDER BY LENGTH(`column`)
。 - 中文的部份也很少遇到要排序,有的話就是用 Unicode 字碼順序(
一丁丂七
…)解決。 - 隨便排序,不處理。(耶~)
文章標籤
全站熱搜
留言列表