希望確保變數包含乙個數(即使變數的型別是字串)。或者,希望檢查變數不僅僅是乙個數,而且要特別指定其型別是乙個數字型別。
解決方案:
使用is_numeric() 檢查乙個變數是否是乙個數。
示例
//is_numeric不判斷資料型別
$arr=array(5,'5','05',12.3,'16.7','five','10e20',0xdecafbad);
foreach($arr
as$num)else
}//輸出
yesyes
yesyes
yesno
yesyes
擴充套件:is_numeric() 的有關文件
問題:希望檢查兩個浮點數是否相等。
解決方案:
使用乙個delta值,檢查兩個數字之差是否小於這個delta值。
示例
//高精度的浮點數,不能直接用==來判斷是否相等,浮點數會缺失精度
$delta=0.00001;
$a=1.0000001;
$b=1.0000000;
if(abs($a-$b)<$delta)else
//輸出
a=b
擴充套件:abs() 的有關文件
問題:希望捨入乙個浮點數,可能取整為乙個整數,或者捨入為指定的小數字數。
解決方案:
要把乙個數取整為最接近的數,可以使用round(),如果在兩個數之間,那麼就取遠離0的整數。向上取整用ceil(),向下取整用floor() 示例
//round()函式可以由第二個引數來決定,保留幾位小數。
$num1=round(2.4);
$num2=round(2.32,1); //表示保留一位小數
$num3=ceil(3.4);
$num4=floor(3.7);
$num5=round(2.5);
$num6=round(-2.5); //取遠離0的整數
//輸出
22.343
3-3
擴充套件:round() 的有關文件
問題:希望一段**在乙個整數範圍內都可以使用。
解決方案:
使用rang($start,$end),產生乙個陣列,或者使用for迴圈實現。
示例
//range()函式可以是數字陣列,也可以是字元陣列。可以使用第三個引數控制步長
//優點是:使用起來比較方便,缺點是:生成不必要的陣列會占用記憶體
$num=range(3,7);
$char=range('a','e');
foreach($num
as$n)
foreach($char
as$c)
//輸出34
567a b c d e
擴充套件:range() 的有關文件
問題:希望在指定的數字範圍內,生成乙個隨機數,如果要讓隨機數可以**,那麼就需要先mt_srand()來初始化,隨機數種子。
解決方案:
使用mt_rand() 相比於 rand(),效能更好,更加不可**。
示例
//mt_rand(min,max)生成的隨機數包括min和max
$num=mt_rand(65,97);
//生成乙個可以**的隨機數
mt_srand(321);
$num1=mt_rand();
mt_srand(321);
$num2=mt_rand();
//輸出
68//這個值不可**
18//這個值與下面的值相同
18
擴充套件:mt_rand() 的有關文件
問題:希望計算乙個數的對數和指數
解決方案:
使用log() 、exp() 、pow()。
示例
//log()表示以e為底的對數,exp()表示以e為底的指數,pow()可以表示乘方
$log1=$log(10);
$log2=$log(10,2); //表示以2為底10的對數
$exp=exp(2);
$pow=pow(2,3); //表示2的三次方,指數可以是小數
//輸出
2.30258
3.32
7.389
8
擴充套件:log() 的有關文件
問題:希望輸出乙個數,要包括千分位分隔符和小數點。或者顯示百分比。
解決方案:
如果總是需要小數點和千分位分隔符等特定字元,可以使用number_format()。
示例
$number = 1234.56;
//預設帶有以,作為千分位分隔符,不保留小數,預設取整。
$formmat_num1=number_format($number);
$formmat_num2=number_format($number,2);
//第三個小數表示小數點分隔符,第四個表示千分位分隔符
$formmat_num3=number_format($number,2,'.',' ');
//輸出
1,234
1,234.56
1234.56
擴充套件:number_format() 的有關文件 PHP經典例項讀書筆記 變數
empty 會告訴你乙個值是否為空。isset 會告訴你乙個值是否設定。空的定義 integer 0 double 0.0 string 空串 string 0 這個要注意字串 0 也為空 boolean false 陣列 array null 物件 empty 在5.5以前只允許傳入引數,5.5以...
讀書筆記 數學之美 筆記
隨便總結的,書都看了,總要留下點印記不是本質就是乙個編譯碼和傳輸的過程 自然語言處理在過去的30年發生了巨大的變化 構建兩個詞表,乙個是基本詞表,乙個是複合詞表,再根據兩個詞表分表建立兩個語言模型 模型1,模型2,先對句子進行模型1分詞,就得到了小顆粒度的分詞結果,在此基礎上,再用大顆粒度的模型2進...
C 學習讀書筆記 陣列
1.c 有幾條關於初始化陣列的規則,他們限制了初始化的時刻 只有在定義陣列時才能使用初始化,此後就不能使用了,也不能將乙個陣列賦予另乙個陣列 int people 4 ok int class 4 ok class 4 not allowed class people not allowed 不過可...