最近在學PHP語法
但下面這段程式一直搞不懂
有人可以幫我解釋嗎??
//基本設定
$dat_file = "counter.dat";
$show_type = 1;
//主程式
$fp = fopen($dat_file,"r");
$counter = fgets($fp,6);
$counter = $counter +1;
fclose($fp);
if ($show_type == 0){
echo $counter;
} else {
$l = strlen($counter);
for ($i = 0; $i < $l; $i++){
$num = substr($counter, $i, 1);
echo "";
}
}
$fp = fopen($dat_file, "w");
$tmp = fputs($fp, $counter, strlen($counter) + 1);
fclose($fp);
phpinfo();
?>
2006-12-13 17:25:22 · 1 個解答 · 發問者 ? 1 in 電腦與網際網路 ➔ 程式設計
//基本設定
$dat_file = "counter.dat";
$show_type = 1;
=>建立變數 $dat_file 的值是字串 counter.dat
=>建立變數 $show_type 的值是數字 1
//主程式
$fp = fopen($dat_file,"r");
$counter = fgets($fp,6);
$counter = $counter +1;
fclose($fp);
=>fopen($dat_file,"r") 打開檔案counter.dat 模式是 唯讀
=>fgets($fp,6) 傳回 打開檔案中的抓取6個字元值 會傳回一個字串
假設傳回000123好了所以$counter會等於000123
=>因為是計數器嘛 所以有人連到網頁就要加1嚕 所以變000124
=>關掉檔案
ps.fgets() 我沒在用 不過應該沒錯 這是它的函數說明
string fgets ( resource handle [, int length] )
if ($show_type == 0){
echo $counter;
} else {
$l = strlen($counter);
for ($i = 0; $i < $l; $i++){
$num = substr($counter, $i, 1);
echo "";
}
=>如果$show_type 的值是0 那就直接秀出000124 不做處理
如果不是0
那就執行下面else的動作
首先建立變數$l 用strlen()去抓 $counter的長度 回傳回一個整數
如果依例子000124 就會傳回6 (吧= = 哈哈)
ps.strlen() 我沒在用 不過應該沒錯 這是它的函數說明
int strlen ( string string )
接下來是用一個for迴圈 抓出$counter所有的字
條例是($i = 0; $i < $l; $i++)
從0開始 當$i比$l小 就停止 下一個迴圈$i+1
substr($counter, $i, 1)這是抓字的函數
把$counter中的第$i個字元開始 抓1個
接著是 秀出一個img連結是 ".$num.".gif"
詳細說明它的動作就是這樣子
假設$counter是000124
所以$l會=6
for ($i = 0; $i < 6; $i++){
$num = substr($counter, $i, 1);
echo "";
結果應該是這樣
for ($i = 0; $i < 6; $i++){
$num = substr("000124",0,1);
echo "}
下一次迴圈因為$i+1所以=0+1=1
$num = substr("000124",1,1);
echo "}
下一次迴圈因為$i+1所以=1+1=2
$num = substr("000124",2,1);
echo "}
下一次迴圈因為$i+1所以=2+1=3
$num = substr("000124",3,1);
echo "}
下一次迴圈因為$i+1所以=3+1=4
$num = substr("000124",4,1);
echo "}
下一次迴圈因為$i+1所以=4+1=5
$num = substr("000124",5,1);
echo "}
在來$i+1 = 6 達到結束條件 $i<6 所以迴圈結束
你得到這樣的結果
這樣就產生一組圖片的計數器了
2006-12-14 05:35:22 補充:
處理完了 總要把000124更新到檔案吧
不然下一個開檔的人還是看到為000123
所以
$fp = fopen($dat_file, "w");
=>打開檔案為 寫入模式
$tmp = fputs($fp, $counter, strlen($counter) 1);
=>這邊是寫入的動作
2006-12-14 05:35:42 補充:
ps.我還是沒用過fputs()所以說明如下
fputs -- Alias of fwrite()
int fwrite ( resource handle, string string [, int length] )
然後我也不會解釋這句
不過猜它大概就是把本來的數字 1啦
不過沒有看懂
fclose($fp); =>關掉檔案
通常我都會註明 不懂請補充
不過因為很少在用這些東西
所以這次的回答
不懂請再問問別人吧 哈哈
2006-12-14 05:35:50 補充:
http://tw.php.net/manual/en/function.fputs.php
這邊是php的官網
你可以在search for輸入你想查的函數
選想找的範圍 就可以找到你要的東西了
基本上因為你説的這些 我都沒在用 所以我也是邊查邊虎爛你的
不過大致上應該都沒有回答錯啦 ...................
2006-12-14 05:36:09 補充:
好累喔 一次回答不完
要一直貼補充 = =
2006-12-14 00:34:34 · answer #1 · answered by Jelly 7 · 0⤊ 0⤋