PHP入門
4.1 數(shù)據(jù)類型
PHP支持整數(shù)、浮點數(shù)、字符串、數(shù)組和對象。變量類型通常不由程序員決定而由PHP運行過程決定(真是好的解脫。。當然,如果你喜歡的話,你也可以使用cast或者函數(shù)settype()將某種類型的變量轉(zhuǎn)換成指定的類型。
數(shù)值
數(shù)值類型可以是整數(shù)或是浮點數(shù)。你可以用以下的語句來為一個數(shù)值賦值: $a = 1234; # 十進制數(shù) $a = -123; # 負數(shù) $a = 0123; # 八進制數(shù) (等于十進制數(shù)的83) $a = 0x12; # 十六進制數(shù)(等于十進制數(shù)的18) $a = 1.234; # 浮點數(shù)"雙精度數(shù)" $a = 1.2e3; # 雙精度數(shù)的指數(shù)形式
字符串
字符串可以由單引號或雙引號引出的字段定義。注意不同的是被單引號引出的字符串是以字面定義的,而雙引號引出的字符串可以被擴展。而且,在雙引號字符串中可以使用反斜杠()在字符串中加入轉(zhuǎn)義序列和轉(zhuǎn)換字符。舉例如下:
$first = 'Hello'; $second = "World"; $full1 = "$first $second"; # 產(chǎn)生 Hello World $full2 = '$first $second';# 產(chǎn)生 $first $second $full3="01DC studio,." 2000 copyright." " ;
請注意最后一行,如果需要在字符串中使用雙引號,可以使用反斜杠字符,象該行語句所示。這里的的反斜杠用來使雙引號的功能改變。
可以將字符和數(shù)字利用運算符號連接起來。字符被轉(zhuǎn)化成數(shù)字,利用其最初位置。在PHP手冊中有詳細的例子。
數(shù)組與哈希表
數(shù)組與哈希表以同樣的方法被支持。怎樣運用取決于你怎樣定義它們。你可以用list()或者array()來定義它們,也可以直接為數(shù)組賦值。數(shù)組的索引從0開始。雖然我在這里沒有說明,但是你一樣可以輕易的使用多維數(shù)組。
// 一個包含兩個元素的數(shù)組 $a[0] = "first"; $a[1] = "second"; $a[] = "third"; // 添加數(shù)組元素的簡單方法 // 現(xiàn)在$a[2]被賦值為"third" echo count($a); // 打印出3,因為該數(shù)組有3個元素 // 用一個語句定義一個數(shù)組并賦值 $myphonebook = array ( "sbabu" => "5348", "keith" => "4829", "carole" => "4533" ); // 噢,忘了教長吧,讓我們添加一個元素 $myphonebook["dean"] = "5397"; // 你定義的carale元素錯了,讓我們更正它 $myphonebook["carole"] => "4522" // 我還沒有告訴你怎樣使用數(shù)組的相似支持方式嗎?讓我們看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348
其他一些對數(shù)組或哈希表有用的函數(shù)包括sort(),next(),prev()和each()。
對象
使用new語句產(chǎn)生一個對象: class foo { function do_foo () { echo "Doing foo."; } } $bar = new foo; $bar->do_foo();
改變變量類型
在PHP手冊中提到:"PHP不支持(也不需要)直接在聲明變量時定義變量類型;變量類型將根據(jù)其被應用的情況決定。如果你為變量var賦值為一個字符串,那么它變成了一個字符串。如果你又為它賦了整數(shù)值,那么它就變成了整數(shù)。"
$foo = "0"; // $foo是字符串(ASCII 48) $foo++; // $foo是字符串"1" (ASCII 49) $foo += 1; // $foo現(xiàn)在是整數(shù)(2) $foo = $foo + 1.3; // $foo是一個雙精度數(shù)(3.3) $foo = 5 + "10 Little Piggies"; // $foo是一個整數(shù)(15) $foo = 5 + "10 Small Pigs"; // $foo是一個整數(shù)(15)
如果想要強行轉(zhuǎn)換變量類型,可以使用與C語言相同的函數(shù)settype()。
4.2 變量與常量
可能你已經(jīng)注意到,變量都有一個美元符號($)的前綴。所有變量都是局部變量,為了使得定義的函數(shù)中可以使用外部變量,使用global語句。而你要將該變量的作用范圍限制在該函數(shù)之內(nèi),使用static語句。 $g_var = 1 ; // 全局范圍 function test() { global $g_var; // 這樣就可以聲明全局變量了 }
更先進一些的是變量的變量表示。請參考PHP手冊。這在有時會顯得很有用。
PHP內(nèi)置了許多已定義的變量。你也可以用define函數(shù)定義你自己的常量,比如define("CONSTANT","value")。
4.3 運算符
PHP具有C,C++和Java中的通常見到的運算符。這些運算符的優(yōu)先權也是一致的。賦值同樣使用"="。
算術和字符
以下只有一種運算符是有關字符的: $a + $b :加 $a - $b :減 $a * $b :乘 $a / $b :除 $a % $b :取模(余數(shù)) $a . $b :字符串連接
邏輯和比較
邏輯運算符有: $a || $b :或 $a or $b :或 $a && $b :與 $a and $b :與 $a xor $b :異或 (當$a或$b為true時為true,兩者一樣時為false) ! $a :非 比較運算符有: $a == $b :相等 $a != $b :不等 $a < $b :小于 $a <= $b :小于等于 $a > $b :大于 $a >= $b :大于等于 與C一樣PHP也有三重運算符(?:)。位操作符在PHP同樣存在。
優(yōu)先權
就和C以及Java一樣!
4.4 控制流程結構
PHP有著與C一樣的流程控制。我將在下面大概介紹。
if, else, elseif, if(): endif
if (表達式一) { . . . } elseif (表達式二) { . . . } else { . . . } // 或者像Python一樣 if (表達式一) : . . . . . . elseif (表達式二) : . . . else : . . . endif ;
Loops. while, do..while, for
while (表達式) { . . . } do { . . . } while (表達式); for (表達式一; 表達式二; 表達式三) { . . . } //或者像Python一樣 while (expr) : . . . endwhile ;
switch
switch是對多重if-elseif-else結構的最好的替換: switch ($i) { case 0: print "i equals 0"; case 1: print "i equals 1"; case 2: print "i equals 2"; }
break, continue
break中斷當前的循環(huán)控制結構。 continue被用來跳出剩下的當前循環(huán)并繼續(xù)執(zhí)行下一次循環(huán)。
require, include
就像C中的#include預處理一樣。你在require中指定的那個文件將替代其在主文件中的位置。在有條件的引用文件時,可以使用include()。這樣就使得你可以將復雜的PHP文件分割成多個文件并且在不同需要時分別引用它們。
4.5 函數(shù)
你可以像以下的例子一樣定義自己的函數(shù)。函數(shù)的返回值可以是任何數(shù)據(jù)類型: function foo (變量名一, 變量名二, . . . , 變量名n) { echo "Example function.n"; return $retval; }
所有PHP代碼都可以出現(xiàn)在函數(shù)定義中,甚至包括對其他函數(shù)和類的定義。函數(shù)必須在引用之前定義。
4.6 類
利用類模型建立類。可以參考PHP手冊中對類的詳細解釋。 class Employee { var $empno; // 員工人數(shù) var $empnm; // 員工姓名
function add_employee($in_num, $in_name) { $this->empno = $in_num; $this->empnm = $in_name; }
function show() { echo "$this->empno, $this->empnm"; return; }
function changenm($in_name) { $this->empnm = $in_name; } }
$sbabu = new Employee; $sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show();
|