1. 基本文法
要在HTML代碼中嵌入PHP指令碼的方法是在<?php ?>中書寫代碼。向瀏覽器輸出資料採用echo或者print函數。echo可以接受多個參數,print 只能接受一個。echo的形式是
void echo(string arg1,[,…string argn]);
PHP文法允許省略括弧。 例如,
複製代碼 代碼如下:<?php
$my =' my ';
echo 'Hello',$my,'world'
?>
將會在瀏覽器上輸出 Hello my world
PHP 還支援一個和C語言很像的printf函數,例如 printf(‘ %d apples',100),將會輸出 100 apples。sprintf的用法和printf一致,不過它不是輸出到瀏覽器,而是返回一個字串。
2.資料類型和變數
PHP是弱類型的,一個變數不需要預先聲明,也不需要指定類型。PHP中變數是$加上變數名,PHP的變數是區分大小寫。 例如上例中的 $my='my'。
PHP支援的變數類型包括:布爾型,整型,浮點型,字串,數組和對象。前四種很常用,也和其他語言類似,不多做介紹。數組和對象後文具體介紹。
PHP中有函數來檢測 對象的類型,它們是 getttype。gettype返回一個string,它的值可以是array,boolean,double,integer,object,resource,string 和 unknow type. PHP也支援顯式的類型轉換,文法和C類似。
轉換操作符 轉換為
(array) 數組
(bool) (boolean) 布爾型
(int) (integer) 整數
(object) 對象
(float),(double),(real) 浮點數
(string) 字串
例如: 複製代碼 代碼如下:<?php
$str ='a string';
$num=15;
$numstr='123.3';
echo gettype($str),'<br/>';
echo gettype($num),'<br/>';
echo gettype($numstr),'<br/>';
$numstr=(float)$numstr;
echo gettype($numstr);
?>
輸出結果為:
string
integer
string
double
還有函數可以用來判斷一個變數是不是某種類型,例如 is_array(),is_bool()等等,用法都類似。
3. 函數和變數範圍
PHP聲明函數的方法很簡單,形式如下: 複製代碼 代碼如下:function functionName(parameters){
function body
}
不需要指定傳回型別,括弧中也不需要指定變數類型,只要有變數名就可以。例如: 複製代碼 代碼如下:<?php
function taxedPrice($price,$taxrate){
return $price*(1+$taxrate);
}
echo taxedPrice(100, 0.03);
?>
預設情況下,PHP是按值傳遞參數的,在函數內改變參數的值並不會改變函數外變數的值,但是PHP也支援按引用傳遞,文法和C一致,&$paramName,例如,下面一個經典的例子: 複製代碼 代碼如下:<?php
function swap1($x,$y){
$t=$x;$x=$y;$y=$t;
}
function swap2(&$x,&$y){
$t=$x;$x=$y;$y=$t;
}
$a=3;$b=5;
swap1($a,$b);
printf("a is %d, b is %d <br/>",$a,$b);
swap2($a,$b);
printf("a is %d, b is %d <br/>",$a,$b);
?>
輸出結果:
a is 3, b is 5
a is 5, b is 3
PHP的函數還支援參數的預設值,文法和C也是一樣的。例如: 複製代碼 代碼如下:<?php
function taxedPrice($price,$taxrate=0.03){
return $price*(1+$taxrate);
}
echo taxedPrice(100);
?>
下面介紹變數的範圍。PHP的變數範圍和C很類似,有局部變數,函數參數,全域變數,靜態變數4種。局部變數就是在函數內聲明的變數,函數參數是在函數首部聲明的變數;不在函數中聲明的變數是全域變數,全域變數可以在任何地方訪問到,但是和C不同的是,如果在函數中要修改全域變數的值需要用GLOBAL關鍵字顯式指定它是全域變數,否則PHP就會聲明一個同名的局部變數並且覆蓋它。例如: 複製代碼 代碼如下:<?php
$taxrate=0.03; //global
function change1() {
$taxrate+=1;
}
function change2() {
GLOBAL $taxrate;
$taxrate+=1;
}
change1();
echo $taxrate,'<br/>';
change2();
echo $taxrate,'<br/>';
?>
輸出的結果是:
0.03
1.03
PHP還有一種超級全域變數。超級全域變數是由PHP系統預定義的,主要用來訪問與環境有關的資訊,例如目前使用者會話,使用者作業環境和本地環境等。超級全域變數是一個數組,例如$_SERVER中儲存了伺服器相關的資訊。$_GET,$_POST,$_FILES,$_COOKIE中分別儲存了用戶端採用get提交,和post的提交的資訊,上傳的檔案,cookie資訊等。這些變數的使用都很簡單,需要什麼資訊只需要尋找
4 變數的變數
和C一類的靜態語言不同,PHP的變數名本身可以是一個變數,這對於需要動態產生很多變數的時候是很便利的。例如: 複製代碼 代碼如下:<?php
$r="hello";
$$r="I am hello";
echo $hello;
?>
輸出結果為: I am hello
5.流程式控制制語句
主要包括,if else, while,for,do while,switch. 這些和C語言都很像,基本是一致的。不多做介紹。有些不同,PHP的 elseif是一個關鍵字,是連在一起的,而C語言是else if。