PHP光速教程
日期:2010-07-29 | 來源:redice's Blog | 作者:redice | 182 人圍觀 | 0 人鼓掌了! // by redice 2010.07.29
// redice@163.com
為公司實習生寫的PHP學習提綱,根據自己的學習及項目開發經驗總結了PHP語言最核心的知識點。可以作為PHP快速入門的教程。
1 用戶端指令碼和服務端指令碼
用戶端:VBscript(對IE依賴性很強,放棄)、Javascript
服務端:ASP、PHP、Perl
JSP(服務端,非指令碼)
Python(可用服務端,非指令碼)
2 學習一門語言的要點/順序
功能、特點、文法、變數、運算子、流程式控制制、函數、資料結構
3 學習服務端語言的要點
資料輸入輸出、資料庫操作、session和cookie的使用
4 PHP的功能
支援與眾多伺服器軟體(Apache,IIS ISAPI/FastCGI,Nginx等)結合進行資料處理
5 PHP的特點
跨平台、內建函數庫非常豐富(寫得少做得多)、文法簡潔、參考資料非常多
6 PHP的文法
// 這是注釋行,注釋行以//開始
phpinfo(); // 語句以;結束
?>
7 PHP的變數
鬆散類型,自動聲明,強制轉換
PHP變數以$開頭(從錢開始,很實惠的一種語言)
$txt = "Hello World!"; // 字串用""包圍,轉義",\
$number = 16;
?>
鬆散類型語言:VB,VBscript,ASP,PHP,Python
強型別語言:C(C++),JSP
8 PHP的運算子
算術運算:+,-,*,/,%(取餘),++(自增1),--(自減1)
賦值運算:=,+=,-=,*=,/=,.=,%=
比較子:==,===,!=,>,<,>=,<=
邏輯運算子:&&,||,!
其它運算子:.(字串串連)
$i=10;
$i+=1;
echo $i; // echo 資料輸出函數,還可以用print
echo ++$i; // ?
echo $i++; // ?
?>
*兩等號與三等號
== 只比較值是否相等,會將兩側值進行類型轉換
=== 比較值和類型是否相同,不會進行類型轉換,類型和值都相同才為真
例如:
$a="2"; // 字串型2
$b=2; // 數值型2
$a==$b, 是對的,都是2
$a===$b,是不對的,因為$a是字元型$b是數值型,值雖一樣,但類型不一樣
9 PHP流程式控制制
順序語句
分支語句:if else,Switch
// if else語句
if (condition)
code to be executed if condition is true;
elseif (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;
// switch語句
switch (expression)
{
case label1:
code to be executed if expression = label1;
break;
case label2:
code to be executed if expression = label2;
break;
default:
code to be executed
if expression is different
from both label1 and label2;
}
迴圈語句:while,for,foreach
// while迴圈
while (condition)
code to be executed;
// for迴圈
for (initialization; condition; increment)
{
code to be executed;
}
// foreach迴圈,遍曆數組
foreach (array as value)
{
code to be executed;
}
// foreach迴圈的樣本
$arr=array("one", "two", "three");
foreach ($arr as $value)
{
echo "Value: " . $value . "
";
}
?>
*結束PHP程式的執行:
exit($str); // 結束PHP執行並輸出$str
die(); // 僅結束PHP執行
10 PHP函數
內建函數:
http://php.chinaunix.net/manual/en/
(1)資料輸出:echo,print,print_r(輸出數組)
(2)字串操作:
// 返回$string的長度
int strlen ( string $string )
// 刪除$str兩端的空格或其它字元
string trim ( string $str [, string $charlist ] )
$str=" xiao ping ni hao! ";
echo trim($str);
echo "
";
echo trim($str," x!")
?>
// 字串轉大小寫
string strtolower ( string $str )
string strtoupper ( string $string )
// 尋找字串
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
傳回值:返回找到的子串的位置,沒有找到返回false
注意:
如果子串$needle在$haystack串首出現將返回0
因此判斷是否找到字串應該用===而不能用==
$str="redicecn.com";
// 下面是錯誤的判斷
if(strpos($str,"redice")==false)
{
echo "沒有找到子串!";
}
else
{
echo "找到了子串!";
}
?>
// 字串截取
string substr ( string $string , int $start [, int $length ] )
// 字串替換
string str_replace ( mixed $search , mixed $replace , mixed $subject)
string str_ireplace ( mixed $search , mixed $replace, mixed $subject) // 不區分大小寫
(3)時間日期:
// time() 函數返回目前時間的 Unix 時間戳記
time(void)
// date() 函數格式化一個本地時間/日期
// 預設是格林威治時區
date(format,timestamp)
// 設定為東8區
date_default_timezone_set('Etc/GMT-8');
echo date("Y-m-d H:i:s",time());
?>
自訂函數:
$sitename="電子工程社區";
function welcom($user)
{
global $sitename; // 引用全域變數
// 傳回值
return $user.",歡迎您的光臨".$sitename."!";
}
// 函數調用
echo welcom("redice");
?>
11 PHP的資料結構
數組
// 數值數組的定義
(1) 自動分配key
$names = array("芙蓉姐姐","鳳姐","犀利哥");
(2) 手動分配key
$names[0]="芙蓉姐姐";
$names[1]="鳳姐";
$names[2]="犀利哥";
// 關聯陣列的定義
$ages = array("芙蓉姐姐"=>32, "鳳姐"=>29, "犀利哥"=>42);
也可以這樣
$ages["芙蓉姐姐"] = 32;
$ages["鳳姐"] = 29;
$ages["犀利哥"] = 42;
// 多維陣列
$students = array
(
"0911120688"=>array
(
"姓名"=>"齊鵬",
"年齡"=>24,
"性別"=>"男"
),
"0911120699"=>array
(
"姓名"=>"宋玉偉",
"年齡"=>22,
"性別"=>"女"
),
"0911120670"=>array
(
"姓名"=>"陳素芳",
"年齡"=>22,
"性別"=>"女"
)
);
12 PHP輸入(擷取用戶端輸入)
(1)$_GET 變數
$_GET 變數是一個數組,內容是由 HTTP GET 方法發送的變數名稱和值。
(2)$_POST 變數
$_POST 變數是一個數組,內容是由 HTTP POST 方法發送的變數名稱和值。
(3)$_REQUEST 變數
PHP 的 $_REQUEST 變數包含了 $_GET, $_POST 以及 $_COOKIE 的內容。
13 SESSION和COOKIE的使用
(1)SESSION
儲存在服務端,伺服器通過COOKIE中的SESSIONID判斷,常用來進行身分識別驗證。
使用SESSION前需要用session_start()啟動會話,
由於session_start()需要修改HTTP應答報文的COOKIE頭(存SESSIONID),
因此session_start()必須在HTTP應答本文輸出之前被調用。
// 建立session
session_start();
$_SESSION['user']="redice";
?>
// 讀取session
session_start();
echo $_SESSION['user'];
?>
刪除SESSION
unset($_SESSION['user']);
?>
或
session_destroy(); // 將刪除所有的session
?>
(2)COOKIE
儲存在用戶端,隨請求報文一起被發送到服務端,
常用來儲存使用者自訂設定、瀏覽記錄等與安全無關的資料。
*COOKIE在用戶端儲存,可被使用者修改,因此不能儲存敏感性資料。
// 建立cookie
setcookie(name, value, expire);
setcookie()也需要修改HTTP應答頭,因此需要在輸出任何本文之前被調用
setcookie("user", "redice", time()+3600);
?>
// 讀取cookie
echo $_COOKIE["user"];
?>
// 刪除cookie
// 設定立即到期,用戶端(瀏覽器)會自動刪除
setcookie("user", "", time()-3600);
?>
14 資料庫操作
操作流程:
串連資料庫->選擇庫->設定採用的字元集
->操作資料(查詢,更新,刪除,插入)->關閉資料庫
$conn=0;
$conn = mysql_connect("localhost","root","redice2009");
if (!$conn)
{
die("不能開啟資料庫連接,錯誤: " . mysql_error());
}
// 選擇資料庫
mysql_select_db("thymall", $conn);
// 設定mysql資料庫輸出資料的字元集
mysql_query("set names 'gbk'");
$sql="select * from thym_goods LIMIT 5";
// 執行查詢
$result=mysql_query($sql,$conn);
// 遍曆查詢結果
while($result && $row=mysql_fetch_array($result))
{
}
// 關閉資料庫
mysql_close($conn);
?>
15 其它
良好的程式風格:縮排,注釋
開發工具的選取原則:代碼關鍵字高亮,自動完成