回php_cookbook

##2.1檢查變數值是否為有效數字

<程式碼>

$num1 = 'test';
if (is_float ($num1) || is_int($num1)) {
print '$num1 是數字';
}elseif (is_numeric ($num1)){
print '$num1 可能不是數字,但其內容為數值';
}else {
print '$num1 既不是數字,也非數值字串';
}

<執行結果:>

$num1 既不是數字,也非數值字串

<筆記區>

想知道某個變數是否為數字
使用 is_int()和is_float()兩個函式
is_int -> 檢查整數, is_float->檢查浮點數字, is_numeric->檢查字串裡為數字


##2.2處理一連串數字

<程式碼>

$x =10;
$y =20;

for ($i = $x;
$i <= $y;
$i++){
//$i 將會是$x到$y之間的整數
print "$i ";
}

$items = array ( "Linux",
"Apache",
"PHP",
"A",
"SQL",
"Server",
"Talented",
"Administrator");

for ($i = 2;
$i <=6;
$i++){
print "$items[$i]
";
}

<執行結果:>

10 11 12 13 14 15 16 17 18 19 20 PHP
A
SQL
Server
Talented

<筆記區>

使用迴圈逐一處理所有數字
注意:不要直接使用比較運算子(==或!=)來中斷迴圈,因為四捨五入的錯誤可能會無法測試成功。


##2.4對任意精確度的數字四捨五入

<程式碼>

$number = 34.697405454021;
$rounded = bc_round($number, 5);

echo $rounded;

function bc_round($num, $count){
//把數字隔開
list($whole_num, $decimal) = explode(".",strval($num));
//echo $whole_num."
";
//處理小數的部分
$decimal_string = substr($decimal,0,$count);
$determinant = substr($decimal,$count,1);

//檢查特例
if (substr($decimal,0,1)== "9"){
$len = strlen($decimal_string);
for ($i = 0;
$i < $len ;
$i++){
if(substr($decimal_string,$i,1) == "9"){
$true++;
}
}
if ($true == $len){
$whole_num++;
//echo $whole_num;
return $whole_num;
}
}
//非特例則四捨五入
if($determinant >= 5){
$decimal_string++;
}
//echo $whole_num;
//重組
$denom = pow(10,strlen($decimal_string));
$decimal_corrected = $decimal_string/$denom;
$final_num = $whole_num+$decimal_corrected;
return ("$final_num");
}

<執行結果:>

34.69741

<筆記區>

原先程式碼後段return ("$whole_num.$decimal_corrected"),算出結果出現錯誤 34.0.69741
修改為$final_num = $whole_num+$decimal_corrected;
return ("$final_num");
答案就正確了。


##2.10 設定數字輸出格式

<程式碼>

$num = 12500000.8356;
$num = number_format($num,2);
//取到小數2位 print "$num";

<執行結果:>

12,500,000.84

<筆記區>

number_format()函式是PHP另一個方便的地方,在其他語言中(C,Perl等等)你可能必須自己寫。



##2.11弧度與角度的轉換
角度 90 轉成弧度為 1.5707963267949
弧度 3.14 轉成角度為 179.90874767108 度

##2.13產生亂數
rand items =>SQL
##2.14產生一個唯一的隨機數字 用檔案
1549493630 為首次產生

##2.15 亂數加權
選擇的公司是:PHP

##2.16 將今天日期載入陣列中
4/3/2025
3/4/2025
有效日期

--------- 日期格式: 月 / 日 / 年 ex:09/06/2024 2024年9月6日 ------
12/06/2024


##2.19 計算不同時區時間
芬蘭的時區是+2
seconds =>25
minutes =>54
hours =>9
mday =>3
wday =>4
mon =>4
year =>2025
yday =>92
weekday =>Thursday
month =>April
0 =>1743645265
4/3/2025

##2.22效能測試

For 迴圈:0.027368068695068 秒

For 迴圈:0.016846895217896 秒