天天看點

php筆記1,PHP學習筆記之一

本系列适合有其他程式設計語言經驗而PHP經驗為0的人快速參考入門。

配置PHP以及MySQL的過程略去,如果在Ubuntu下,參考 Ubuntu 10.04 Installation Memo 即可。

1. 基本文法

要在HTML代碼中嵌入PHP腳本的方法是在<?php ?>中書寫代碼。向浏覽器輸出資料采用echo或者print函數。echo可以接受多個參數,print 隻能接受一個。echo的形式是

void echo(string arg1,[,…string argn]);

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)

字元串例如:

$str ='a string';

$num=15;

$numstr='123.3';

echo gettype($str),'

';

echo gettype($num),'

';

echo gettype($numstr),'

';

$numstr=(float)$numstr;

echo gettype($numstr);

?>

輸出結果為:

string

integer

string

double

還有函數可以用來判斷一個變量是不是某種類型,例如 is_array(),is_bool()等等,用法都類似。

3. 函數和變量作用域

PHP聲明函數的方法很簡單,形式如下:

function functionName(parameters){

function body

}

不需要指定傳回類型,括号中也不需要指定變量類型,隻要有變量名就可以。例如:

function taxedPrice($price,$taxrate){

return $price*(1+$taxrate);

}

echo taxedPrice(100, 0.03);

?>

預設情況下,PHP是按值傳遞參數的,在函數内改變參數的值并不會改變函數外變量的值,但是PHP也支援按引用傳遞,文法和C一緻,&$paramName,例如,下面一個經典的例子:

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

",$a,$b);

swap2($a,$b);

printf("a is %d, b is %d

",$a,$b);

?>

輸出結果:

a is 3, b is 5

a is 5, b is 3

PHP的函數還支援參數的預設值,文法和C也是一樣的。例如:

function taxedPrice($price,$taxrate=0.03){

return $price*(1+$taxrate);

}

echo taxedPrice(100);

?>

下面介紹變量的作用域。PHP的變量作用域和C很類似,有局部變量,函數參數,全局變量,靜态變量4種。局部變量就是在函數内聲明的變量,函數參數是在函數首部聲明的變量;不在函數中聲明的變量是全局變量,全局變量可以在任何地方通路到,但是和C不同的是,如果在函數中要修改全局變量的值需要用GLOBAL關鍵字顯式指定它是全局變量,否則PHP就會聲明一個同名的局部變量并且覆寫它。例如:

$taxrate=0.03; //global

function change1() {

$taxrate+=1;

}

function change2() {

GLOBAL $taxrate;

$taxrate+=1;

}

change1();

echo $taxrate,'

';

change2();

echo $taxrate,'

';

?>

輸出的結果是:

0.03

1.03

PHP還有一種超級全局變量。超級全局變量是由PHP系統預定義的,主要用來通路與環境有關的資訊,例如目前使用者會話,使用者操作環境和本地環境等。超級全局變量是一個數組,例如$_SERVER中存儲了伺服器相關的資訊。$_GET,$_POST,$_FILES,$_COOKIE中分别存儲了用戶端采用get送出,和post的送出的資訊,上傳的檔案,cookie資訊等。這些變量的使用都很簡單,需要什麼資訊隻需要查找

4 變量的變量

和C一類的靜态語言不同,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。