用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1771|回复: 0
收起左侧

正整數轉換

[复制链接]
发表于 2014-12-22 10:54:34 | 显示全部楼层 |阅读模式
本帖最后由 Closer 于 2015-3-3 15:53 编辑

主要是用兩個函式來實現
floor(), abs()

網上有許多正整數的驗證方式
不乏有 正規式、(int) 轉換、is_int() 檢查...等等
但總有地方覺得不方便
最後發現到上面那兩個函式

abs()
是轉為絕對值
任何負數都會變正的
任何特殊符號或文字都會變 0

floor()
是無條件接近較小數
15 = floor(15.6)
-13 = floor(-12.3)

組合起來就是 floor(abs())

也就是說,任何進入 abs() 的無論文字/數字/符號,都會變正數或 0
因為是正數,在這種情況下的 floor() 就會無條件捨去所有小數
15 = floor(abs(-15.7))  //先轉換正數變 15.7 再捨去小數變 15
0 = floor(abs('測試'))  //任何非數字的字串 abs() 都換轉換為 0

好處在於,你不必多做 if 判斷式去做驗證是否為小數、負數
floor(abs()) 直接就幫你換為正整數!

特殊情況
0 = floor(abs('測試123'))
123 = floor(abs('123測試111'))
123 = floor(abs('123*111'))
12 = floor(abs('12.3我3*1我2'))

為了避免特殊情況
變數輸入前先檢查是否為數字
is_numeric()

最近發現用 abs((int)$data) 更便捷
而且不用去檢查數據到底是甚麼型態

 

评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

本版积分规则