php 格式化數(shù)字的時(shí)候注意數(shù)字的范圍
更新時(shí)間:2010年04月13日 15:45:43 作者:
因?yàn)?數(shù)據(jù)庫(kù)中 id 可能會(huì)很大 如果使用%d的話,就可能出現(xiàn)因?yàn)槌隽朔秶?而到不到正確的結(jié)果。所以,個(gè)人建議 對(duì)id進(jìn)行格式化的時(shí)候 使用%.0f 比 %d 要 好的多。
構(gòu)造sql語(yǔ)句是 比起來(lái)
$sql = 'SELECT *
FROM sdb_comments
WHERE goods_id = '.intval($goods_id).'
AND for_comment_id IS NULL
AND object_type = ".$item."
AND disabled="false"
AND display = "true"';
我更喜歡這樣做:
$sql = sprintf('SELECT *
FROM sdb_comments
WHERE goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
AND disabled="false"
AND display = "true"', (float)$goods_id, $item);
這個(gè)語(yǔ)句還算 簡(jiǎn)單,如果是更復(fù)雜的話,用拼接字符串的話,那簡(jiǎn)直就是一個(gè)噩夢(mèng)。
使用第二種方式的話,比較方便.但是一個(gè)小問(wèn)題:在格式化數(shù)字的時(shí)候就需要注意其取值范圍。數(shù)字操作了取值反問(wèn)。那么最后返回的sql 也不是我們需要的。
我今天做了個(gè)總結(jié):
%d: 2^31~2^31-1(-2147483648~2147483647) (將int轉(zhuǎn)化為有符號(hào)十進(jìn)制)
%b:二進(jìn)制(將int類(lèi)型的轉(zhuǎn)化為二進(jìn)制)
%c:字符(將int類(lèi)型轉(zhuǎn)化為字符)
%u: 2^32-1(0 ~ 4294967295) (將int轉(zhuǎn)化為有符號(hào)十進(jìn)制)
%f: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 本地化
%F: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 非本地化
%o (將int轉(zhuǎn)化為八進(jìn)制)
%s:字符串
%x:將int轉(zhuǎn)化為小寫(xiě)字母的十六進(jìn)制
%X:將int轉(zhuǎn)化為大寫(xiě)字母的十六進(jìn)制
因?yàn)?數(shù)據(jù)庫(kù)中 id 可能會(huì)很大 如果使用%d的話,就可能出現(xiàn)因?yàn)槌隽朔秶?而到不到正確的結(jié)果。所以,個(gè)人建議 對(duì)id進(jìn)行格式化的時(shí)候 使用%.0f 比 %d 要 好的多。
復(fù)制代碼 代碼如下:
$sql = 'SELECT *
FROM sdb_comments
WHERE goods_id = '.intval($goods_id).'
AND for_comment_id IS NULL
AND object_type = ".$item."
AND disabled="false"
AND display = "true"';
我更喜歡這樣做:
復(fù)制代碼 代碼如下:
$sql = sprintf('SELECT *
FROM sdb_comments
WHERE goods_id = %.0f
AND for_comment_id IS NULL
AND object_type = "%s"
AND disabled="false"
AND display = "true"', (float)$goods_id, $item);
這個(gè)語(yǔ)句還算 簡(jiǎn)單,如果是更復(fù)雜的話,用拼接字符串的話,那簡(jiǎn)直就是一個(gè)噩夢(mèng)。
使用第二種方式的話,比較方便.但是一個(gè)小問(wèn)題:在格式化數(shù)字的時(shí)候就需要注意其取值范圍。數(shù)字操作了取值反問(wèn)。那么最后返回的sql 也不是我們需要的。
我今天做了個(gè)總結(jié):
%d: 2^31~2^31-1(-2147483648~2147483647) (將int轉(zhuǎn)化為有符號(hào)十進(jìn)制)
%b:二進(jìn)制(將int類(lèi)型的轉(zhuǎn)化為二進(jìn)制)
%c:字符(將int類(lèi)型轉(zhuǎn)化為字符)
%u: 2^32-1(0 ~ 4294967295) (將int轉(zhuǎn)化為有符號(hào)十進(jìn)制)
%f: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 本地化
%F: -2^128-2^128(-3.4E38 ~+3.4E38)(將float轉(zhuǎn)化為float) 非本地化
%o (將int轉(zhuǎn)化為八進(jìn)制)
%s:字符串
%x:將int轉(zhuǎn)化為小寫(xiě)字母的十六進(jìn)制
%X:將int轉(zhuǎn)化為大寫(xiě)字母的十六進(jìn)制
因?yàn)?數(shù)據(jù)庫(kù)中 id 可能會(huì)很大 如果使用%d的話,就可能出現(xiàn)因?yàn)槌隽朔秶?而到不到正確的結(jié)果。所以,個(gè)人建議 對(duì)id進(jìn)行格式化的時(shí)候 使用%.0f 比 %d 要 好的多。
您可能感興趣的文章:
- PHP中常用的字符串格式化函數(shù)總結(jié)
- php格式化日期實(shí)例分析
- php格式化時(shí)間戳顯示友好的時(shí)間實(shí)現(xiàn)思路及代碼
- php時(shí)間戳格式化顯示友好的時(shí)間函數(shù)分享
- php實(shí)現(xiàn)的返回?cái)?shù)據(jù)格式化類(lèi)實(shí)例
- PHP文件大小格式化函數(shù)合集
- php自定義的格式化時(shí)間示例代碼
- 利用php遞歸實(shí)現(xiàn)無(wú)限分類(lèi) 格式化數(shù)組的詳解
- PHP 防注入函數(shù)(格式化數(shù)據(jù))
- php Smarty date_format [格式化時(shí)間日期]
- PHP實(shí)現(xiàn)格式化文件數(shù)據(jù)大小顯示的方法
相關(guān)文章
Yii2——使用數(shù)據(jù)庫(kù)操作匯總(增刪查改、事務(wù))
本篇文章主要介紹了Yii2——使用數(shù)據(jù)庫(kù)操作匯總,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12PHP開(kāi)發(fā)中AJAX技術(shù)的簡(jiǎn)單應(yīng)用
這篇文章主要介紹了PHP開(kāi)發(fā)中AJAX技術(shù)的簡(jiǎn)單應(yīng)用,簡(jiǎn)單對(duì)ajax的執(zhí)行原理、實(shí)際應(yīng)用作介紹,感興趣的小伙伴們可以參考一下2015-12-12在PHP中養(yǎng)成7個(gè)面向?qū)ο蟮暮昧?xí)慣
如果您尚未打算用 OO 原則創(chuàng)建應(yīng)用程序,則使用 PHP 的面向?qū)ο螅∣O)的語(yǔ)言特性,這 7 個(gè)習(xí)慣將幫助您開(kāi)始在過(guò)程編程與 OO 編程之間進(jìn)行轉(zhuǎn)換。2010-07-07PHP表單驗(yàn)證的3個(gè)函數(shù)ISSET()、empty()、is_numeric()的使用方法
PHP表單驗(yàn)證的3個(gè)函數(shù)ISSET()、empty()、is_numeric()的使用方法分享,學(xué)習(xí)php的朋友可以參考下。2011-08-08源碼分析系列之json_encode()如何轉(zhuǎn)化一個(gè)對(duì)象
這篇文章主要介紹了源碼分析系列之json_encode()如何轉(zhuǎn)化一個(gè)對(duì)象,對(duì)json_encode()感興趣的同學(xué),可以參考下2021-04-04