PHP 腳本在服務(wù)器上執(zhí)行。
在學(xué)習(xí)php之前,需要對下面的知識有基本的了解:
HTMLCSSJavaScript1.1 什么是 PHP?PHP 是 "PHP Hypertext Preprocessor" 的首字母縮略詞PHP 是一種被廣泛使用的開源腳本語言PHP 腳本在服務(wù)器上執(zhí)行PHP 沒有成本,可供免費(fèi)下載和使用1.2 PHP 是一門令人驚嘆的流行語言!它強(qiáng)大到足以成為在網(wǎng)絡(luò)上最大的博客系統(tǒng)的核心(WordPress)!它深邃到足以運(yùn)行最大的社交網(wǎng)絡(luò)(facebook)!而它的易用程度足以成為初學(xué)者的首選服務(wù)器端語言!1.3 什么是 PHP 文件?PHP 文件能夠包含文本、HTML、CSS 以及 PHP 代碼PHP 代碼在服務(wù)器上執(zhí)行,而結(jié)果以純文本返回瀏覽器PHP 文件的后綴是 ".php"1.4 PHP 能夠做什么?PHP 能夠生成動態(tài)頁面內(nèi)容PHP 能夠創(chuàng)建、打開、讀取、寫入、刪除以及關(guān)閉服務(wù)器上的文件PHP 能夠接收表單數(shù)據(jù)PHP 能夠發(fā)送并取回 cookiesPHP 能夠添加、刪除、修改數(shù)據(jù)庫中的數(shù)據(jù)PHP 能夠限制用戶訪問網(wǎng)站中的某些頁面PHP 能夠?qū)?shù)據(jù)進(jìn)行加密通過 PHP,可以不受限于只輸出 HTML。您還能夠輸出圖像、PDF 文件、甚至 Flash 影片。您也可以輸出任何文本,比如 XHTML 和 XML。
1.5 為什么使用 PHP?PHP 運(yùn)行于各種平臺(Windows, Linux, Unix, Mac OS X 等等)PHP 兼容幾乎所有服務(wù)器(Apache, IIS 等等)PHP 支持多種數(shù)據(jù)庫PHP 是免費(fèi)的。 PHP 易于學(xué)習(xí),并可高效地運(yùn)行在服務(wù)器端1.6 PHP 安裝官方的 PHP 網(wǎng)站 (PHP.net) 提供了 PHP 的安裝說明:http://php.net/manual/zh/install.php
2、PHP 語法PHP 腳本在服務(wù)器上執(zhí)行,然后向?yàn)g覽器發(fā)送回純 HTML 結(jié)果。
2.1 基礎(chǔ) PHP 語法PHP 腳本可放置于文檔中的任何位置。
PHP 腳本以 <?php 開頭,以 ?> 結(jié)尾:
<?php// 此處是 PHP 代碼?>
PHP 文件的默認(rèn)文件擴(kuò)展名是 ".php"。
PHP 文件通常包含 HTML 標(biāo)簽以及一些 PHP 腳本代碼。
下面的例子是一個(gè)簡單的 PHP 文件,其中包含了使用內(nèi)建 PHP 函數(shù) "echo" 在網(wǎng)頁上輸出文本 "Hello World!" 的一段 PHP 腳本:
實(shí)例<!DOCTYPE html><html><body><h3>我的第一張 PHP 頁面</h3><?phpecho "Hello World!";?></body></html>
運(yùn)行結(jié)果:
我的第一張 PHP 頁面Hello World!
注釋:PHP 語句以分號結(jié)尾(;)。PHP 代碼塊的關(guān)閉標(biāo)簽也會自動表明分號(因此在 PHP 代碼塊的最后一行不必使用分號)。
2.2 PHP 中的注釋PHP 代碼中的注釋不會被作為程序來讀取和執(zhí)行。它唯一的作用是供代碼編輯者閱讀。
注釋用于:
使其他人理解您正在做的工作 - 注釋可以讓其他程序員了解您在每個(gè)步驟進(jìn)行的工作(如果您供職于團(tuán)隊(duì))提醒自己做過什么 - 大多數(shù)程序員都曾經(jīng)歷過一兩年后對項(xiàng)目進(jìn)行返工,然后不得不重新考慮他們做過的事情。注釋可以記錄您在寫代碼時(shí)的思路。PHP 支持三種注釋:實(shí)例<!DOCTYPE html><html><body><?php// 這是單行注釋# 這也是單行注釋/*這是多行注釋塊它橫跨了多行*/?></body></html>2.3 PHP 大小寫敏感
在 PHP 中,所有用戶定義的函數(shù)、類和關(guān)鍵詞(例如 if、else、echo 等等)都對大小寫不敏感。
在下面的例子中,所有這三天 echo 語句都是合法的(等價(jià)):
實(shí)例<!DOCTYPE html><html><body><?phpECHO "Hello World!<br>";echo "Hello World!<br>";EcHo "Hello World!<br>";?></body></html>
運(yùn)行結(jié)果:
Hello World!
Hello World!
Hello World!
不過在 PHP 中,所有變量都對大小寫敏感。
在下面的例子中,只有第一條語句會顯示 $color 變量的值(這是因?yàn)?$color、$COLOR 以及 $coLOR 被視作三個(gè)不同的變量):
實(shí)例<!DOCTYPE html><html><body><?php$color="red";echo "My car is " . $color . "<br>";echo "My house is " . $COLOR . "<br>";echo "My boat is " . $coLOR . "<br>";?></body></html>
運(yùn)行結(jié)果
My car is red
My house is
My boat is
變量是存儲信息的容器:
實(shí)例<?php$x=5;$y=6;$z=$x+$y;echo $z;?>
運(yùn)行結(jié)果:
11
3.1 類似代數(shù)x=5y=6z=x+y
在代數(shù)中我們使用字母(比如 x)來保存值(比如 5)。
從上面的表達(dá)式 z=x+y,我們能夠計(jì)算出 z 的值是 11。
在 PHP 中,這三個(gè)字母被稱為變量。
注釋:請把變量視為存儲數(shù)據(jù)的容器。
3.2 PHP 變量正如代數(shù),PHP 變量可用于保存值(x=5)和表達(dá)式(z=x+y)。
變量的名稱可以很短(比如 x 和 y),也可以取更具描述性的名稱(比如 carname、total_volume)。
PHP 變量規(guī)則:變量以 $ 符號開頭,其后是變量的名稱變量名稱必須以字母或下劃線開頭變量名稱不能以數(shù)字開頭變量名稱只能包含字母數(shù)字字符和下劃線(A-z、0-9 以及 _)變量名稱對大小寫敏感($y 與 $Y 是兩個(gè)不同的變量)注釋:PHP 變量名稱對大小寫敏感!
3.3 創(chuàng)建 PHP 變量PHP 沒有創(chuàng)建變量的命令。
變量會在首次為其賦值時(shí)被創(chuàng)建:
實(shí)例<?php$txt="Hello world!";$x=5;$y=10.5;?>
以上語句執(zhí)行后,變量 txt 會保存值 Hello world!,變量 x 會保存值 5,變量 y 會保存值 10.5。
注釋:如果您為變量賦的值是文本,請用引號包圍該值。
3.4 PHP 是一門類型松散的語言在上面的例子中,請注意我們不必告知 PHP 變量的數(shù)據(jù)類型。
PHP 根據(jù)它的值,自動把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。
在諸如 C 和 C++ 以及 Java 之類的語言中,程序員必須在使用變量之前聲明它的名稱和類型。
3.5 PHP 變量作用域在 PHP 中,可以在腳本的任意位置對變量進(jìn)行聲明。
變量的作用域指的是變量能夠被引用/使用的那部分腳本。
PHP 有三種不同的變量作用域:
local(局部)global(全局)static(靜態(tài))3.5.1 Local 和 Global 作用域函數(shù)之外聲明的變量擁有 Global 作用域,只能在函數(shù)以外進(jìn)行訪問。
函數(shù)內(nèi)部聲明的變量擁有 LOCAL 作用域,只能在函數(shù)內(nèi)部進(jìn)行訪問。
下面的例子測試了帶有局部和全局作用域的變量:
實(shí)例<?php$x=5; // 全局作用域function myTest() { $y=10; // 局部作用域 echo "<p>測試函數(shù)內(nèi)部的變量:</p>"; echo "變量 x 是:$x"; echo "<br>"; echo "變量 y 是:$x";} myTest();echo "<p>測試函數(shù)之外的變量:</p>";echo "變量 x 是:$x";echo "<br>";echo "變量 y 是:$x";?>
在上例中,有兩個(gè)變量 $x 和 $y,以及一個(gè)函數(shù) myTest()。$x 是全局變量,因?yàn)樗窃诤瘮?shù)之外聲明的,而 $y 是局部變量,因?yàn)樗窃诤瘮?shù)內(nèi)聲明的。
如果我們在 myTest() 函數(shù)內(nèi)部輸出兩個(gè)變量的值,$y 會輸出在本地聲明的值,但是無法 $x 的值,因?yàn)樗诤瘮?shù)之外創(chuàng)建。
然后,如果在 myTest() 函數(shù)之外輸出兩個(gè)變量的值,那么會輸出 $x 的值,但是不會輸出 $y 的值,因?yàn)樗蔷植孔兞浚⑶以?myTest() 內(nèi)部創(chuàng)建。
注釋:您可以在不同的函數(shù)中創(chuàng)建名稱相同的局部變量,因?yàn)榫植孔兞恐荒鼙辉谄渲袆?chuàng)建它的函數(shù)識別。
3.5.2 PHP global 關(guān)鍵詞global 關(guān)鍵詞用于訪問函數(shù)內(nèi)的全局變量。
要做到這一點(diǎn),請?jiān)冢ê瘮?shù)內(nèi)部)變量前面使用 global 關(guān)鍵詞:
實(shí)例<?php$x=5;$y=10;function myTest() { global $x,$y; $y=$x+$y;}myTest();echo $y; // 輸出 15?>
PHP 同時(shí)在名為 $GLOBALS[index] 的數(shù)組中存儲了所有的全局變量。下標(biāo)存有變量名。這個(gè)數(shù)組在函數(shù)內(nèi)也可以訪問,并能夠用于直接更新全局變量。
上面的例子可以這樣重寫:
實(shí)例<?php$x=5;$y=10;function myTest() { $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];} myTest();echo $y; // 輸出 15?>3.5.3 PHP static 關(guān)鍵詞
通常,當(dāng)函數(shù)完成/執(zhí)行后,會刪除所有變量。不過,有時(shí)我需要不刪除某個(gè)局部變量。實(shí)現(xiàn)這一點(diǎn)需要更進(jìn)一步的工作。
要完成這一點(diǎn),請?jiān)谀状温暶髯兞繒r(shí)使用 static 關(guān)鍵詞:
實(shí)例<?phpfunction myTest() { static $x=0; echo $x; $x++;}myTest();myTest();myTest();?>
然后,每當(dāng)函數(shù)被調(diào)用時(shí),這個(gè)變量所存儲的信息都是函數(shù)最后一次被調(diào)用時(shí)所包含的信息。
注釋:該變量仍然是函數(shù)的局部變量。
4、PHP 5 echo 和 print 語句在 PHP 中,有兩種基本的輸出方法:echo 和 print。
4.1 PHP echo 和 print 語句差異echo 和 print 之間的差異:
echo - 能夠輸出一個(gè)以上的字符串print - 只能輸出一個(gè)字符串,并始終返回 1提示:echo 比 print 稍快,因?yàn)樗环祷厝魏沃怠?/p>4.2 PHP echo 語句
echo 是一個(gè)語言結(jié)構(gòu),有無括號均可使用:echo 或 echo()。
顯示字符串下面的例子展示如何用 echo 命令來顯示不同的字符串(同時(shí)請注意字符串中能包含 HTML 標(biāo)記):
<?phpecho "<h4>PHP is fun!</h4>";echo "Hello world!<br>";echo "I'm about to learn PHP!<br>";echo "This", " string", " was", " made", " with multiple parameters.";?>顯示變量
下面的例子展示如何用 echo 命令來顯示字符串和變量:
<?php$txt1="Learn PHP";$txt2="W3School.com.cn";$cars=array("Volvo","BMW","SAAB");echo $txt1;echo "<br>";echo "Study PHP at $txt2";echo "My car is a {$cars[0]}";?>
運(yùn)行結(jié)果
Learn PHP
Study PHP at W3School.com.cn
My car is a Volvo
print 也是語言結(jié)構(gòu),有無括號均可使用:print 或 print()。
顯示字符串下面的例子展示如何用 print 命令來顯示不同的字符串(同時(shí)請注意字符串中能包含 HTML 標(biāo)記):
<?phpprint "<h4>PHP is fun!</h4>";print "Hello world!<br>";print "I'm about to learn PHP!";?>
運(yùn)行結(jié)果:
PHP is fun!Hello world!
I'm about to learn PHP!
下面的例子展示如何用 print 命令來顯示字符串和變量:
<?php$txt1="Learn PHP";$txt2="W3School.com.cn";$cars=array("Volvo","BMW","SAAB");print $txt1;print "<br>";print "Study PHP at $txt2";print "My car is a {$cars[0]}";?>
運(yùn)行結(jié)果:
Learn PHP
Study PHP at W3School.com.cn
My car is a Volvo
字符串、整數(shù)、浮點(diǎn)數(shù)、邏輯、數(shù)組、對象、NULL。
5.1 PHP 字符串字符串是字符序列,比如 "Hello world!"。
字符串可以是引號內(nèi)的任何文本。您可以使用單引號或雙引號:
實(shí)例<?php $x = "Hello world!";echo $x;echo "<br>"; $x = 'Hello world!';echo $x;?>5.2 PHP 整數(shù)
整數(shù)是沒有小數(shù)的數(shù)字。
整數(shù)規(guī)則:
整數(shù)必須有至少一個(gè)數(shù)字(0-9)整數(shù)不能包含逗號或空格整數(shù)不能有小數(shù)點(diǎn)整數(shù)正負(fù)均可可以用三種格式規(guī)定整數(shù):十進(jìn)制、十六進(jìn)制(前綴是 0x)或八進(jìn)制(前綴是 0)在下面的例子中,我們將測試不同的數(shù)字。PHP var_dump() 會返回變量的數(shù)據(jù)類型和值:
實(shí)例<?php $x = 5985;var_dump($x);echo "<br>"; $x = -345; // 負(fù)數(shù)var_dump($x);echo "<br>"; $x = 0x8C; // 十六進(jìn)制數(shù)var_dump($x);echo "<br>";$x = 047; // 八進(jìn)制數(shù)var_dump($x);?>
運(yùn)行結(jié)果:
int(5985)
int(-345)
int(140)
int(39)
浮點(diǎn)數(shù)是有小數(shù)點(diǎn)或指數(shù)形式的數(shù)字。
PHP var_dump() 會返回變量的數(shù)據(jù)類型和值:
實(shí)例<?php $x = 10.365;var_dump($x);echo "<br>"; $x = 2.4e3;var_dump($x);echo "<br>"; $x = 8E-5;var_dump($x);?>
運(yùn)行結(jié)果:
float(10.365)
float(2400)
float(8.0E-5)
邏輯是 true 或 false。
$x=true;$y=false;
邏輯常用于條件測試。
5.5 PHP 數(shù)組數(shù)組在一個(gè)變量中存儲多個(gè)值。
在下面的例子中,我們將測試不同的數(shù)組。PHP var_dump() 會返回變量的數(shù)據(jù)類型和值:
實(shí)例<?php $cars=array("Volvo","BMW","SAAB");var_dump($cars);?>
運(yùn)行結(jié)果:
array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(4) "SAAB" }
5.6 PHP 對象對象是存儲數(shù)據(jù)和有關(guān)如何處理數(shù)據(jù)的信息的數(shù)據(jù)類型。
在 PHP 中,必須明確地聲明對象。
首先我們必須聲明對象的類。對此,我們使用 class 關(guān)鍵詞。類是包含屬性和方法的結(jié)構(gòu)。
然后我們在對象類中定義數(shù)據(jù)類型,然后在該類的實(shí)例中使用此數(shù)據(jù)類型:
實(shí)例<?phpclass Car{ var $color; function Car($color="green") { $this->color = $color; } function what_color() { return $this->color; }}?>5.7 PHP NULL 值
特殊的 NULL 值表示變量無值。NULL 是數(shù)據(jù)類型 NULL 唯一可能的值。
NULL 值標(biāo)示變量是否為空。也用于區(qū)分空字符串與空值數(shù)據(jù)庫。
可以通過把值設(shè)置為 NULL,將變量清空:
實(shí)例<?php$x="Hello world!";$x=null;var_dump($x);?>6、PHP 字符串函數(shù)
字符串是字符序列,比如 "Hello world!"。
6.1 PHP strlen() 函數(shù)strlen() 函數(shù)返回字符串的長度,以字符計(jì)。
下例返回字符串 "Hello world!" 的長度:
實(shí)例<?phpecho strlen("Hello world!");?>
以上代碼的輸出是:12
提示:strlen() 常用于循環(huán)和其他函數(shù),在確定字符串何時(shí)結(jié)束很重要時(shí)。(例如,在循環(huán)中,我們也許需要在字符串的最后一個(gè)字符之后停止循環(huán))。
6.2 PHP strpos() 函數(shù)strpos() 函數(shù)用于檢索字符串內(nèi)指定的字符或文本。
如果找到匹配,則會返回首個(gè)匹配的字符位置。如果未找到匹配,則將返回 FALSE。
下例檢索字符串 "Hello world!" 中的文本 "world":
實(shí)例<?phpecho strpos("Hello world!","world");?>
以上代碼的輸出是:6。
提示:上例中字符串 "world" 的位置是 6。是 6(而不是 7)的理由是,字符串中首字符的位置是 0 而不是 1。
7、PHP 常量常量類似變量,但是常量一旦被定義就無法更改或撤銷定義。
7.1 PHP 常量常量是單個(gè)值的標(biāo)識符(名稱)。在腳本中無法改變該值。
有效的常量名以字符或下劃線開頭(常量名稱前面沒有 $ 符號)。
注釋:與變量不同,常量貫穿整個(gè)腳本是自動全局的。
7.2 設(shè)置 PHP 常量如需設(shè)置常量,請使用 define() 函數(shù) - 它使用三個(gè)參數(shù):
首個(gè)參數(shù)定義常量的名稱第二個(gè)參數(shù)定義常量的值可選的第三個(gè)參數(shù)規(guī)定常量名是否對大小寫敏感。默認(rèn)是 false。下例創(chuàng)建了一個(gè)對大小寫敏感的常量,值為 "Welcome to W3School.com.cn!":
實(shí)例<!DOCTYPE html><html><body><?php// 定義對大小寫敏感的常量define("GREETING", "Welcome to W3School.com.cn!");echo GREETING;echo "<br>";// 不會輸出常量的值echo greeting;?> </body></html>
運(yùn)行結(jié)果:
Welcome to W3School.com.cn!
greeting
下例創(chuàng)建了一個(gè)對大小寫不敏感的常量,值為 "Welcome to W3School.com.cn!":
實(shí)例<!DOCTYPE html><html><body><?php// 定義對大小寫不敏感的常量define("GREETING", "Welcome to W3School.com.cn!", true);echo GREETING;echo "<br>";// 會輸出常量的值echo greeting;?> </body></html>
運(yùn)行結(jié)果:
Welcome to W3School.com.cn!
Welcome to W3School.com.cn!
下面介紹可用于 PHP 腳本中的各種運(yùn)算符.
8.1 PHP 算數(shù)運(yùn)算符php算數(shù)運(yùn)算符
下例展示了使用不同算數(shù)運(yùn)算符的不同結(jié)果:
實(shí)例<?php $x=10; $y=6;echo ($x + $y); // 輸出 16echo ($x - $y); // 輸出 4echo ($x * $y); // 輸出 60echo ($x / $y); // 輸出 1.6666666666667echo ($x % $y); // 輸出 4?>8.2 PHP 賦值運(yùn)算符
PHP 賦值運(yùn)算符用于向變量寫值。
PHP 中基礎(chǔ)的賦值運(yùn)算符是 "="。這意味著右側(cè)賦值表達(dá)式會為左側(cè)運(yùn)算數(shù)設(shè)置值。
下例展示了使用不同賦值運(yùn)算符的不同結(jié)果:
實(shí)例<?php $x=10; echo $x; // 輸出 10$y=20; $y += 100;echo $y; // 輸出 120$z=50;$z -= 25;echo $z; // 輸出 25$i=5;$i *= 6;echo $i; // 輸出 30$j=10;$j /= 5;echo $j; // 輸出 2$k=15;$k %= 4;echo $k; // 輸出 3?>8.3 PHP 字符串運(yùn)算符
下例展示了使用字符串運(yùn)算符的結(jié)果:
實(shí)例<?php$a = "Hello";$b = $a . " world!";echo $b; // 輸出 Hello world!$x="Hello";$x .= " world!";echo $x; // 輸出 Hello world!?>8.4 PHP 遞增/遞減運(yùn)算符
下例展示了使用不同遞增/遞減運(yùn)算符的不同結(jié)果:
實(shí)例<?php$x=10; echo ++$x; // 輸出 11$y=10; echo $y++; // 輸出 10$z=5;echo --$z; // 輸出 4$i=5;echo $i--; // 輸出 5?>8.5 PHP 比較運(yùn)算符
PHP 比較運(yùn)算符用于比較兩個(gè)值(數(shù)字或字符串):
下例展示了使用某些比較運(yùn)算符的不同結(jié)果:
實(shí)例<!DOCTYPE html><html><body><?php$x=100; $y="100";var_dump($x == $y); // 因?yàn)橹迪嗟龋祷?trueecho "<br>";var_dump($x === $y); // 因?yàn)轭愋筒幌嗟龋祷?falseecho "<br>";var_dump($x != $y); // 因?yàn)橹迪嗟龋祷?falseecho "<br>";var_dump($x !== $y); // 因?yàn)橹挡幌嗟龋祷?trueecho "<br>";$a=50;$b=90;var_dump($a > $b);echo "<br>";var_dump($a < $b);?> </body></html>8.6 PHP 邏輯運(yùn)算符
PHP 數(shù)組運(yùn)算符用于比較數(shù)組:
下例展示了使用不同數(shù)組運(yùn)算符的不同結(jié)果:
實(shí)例<!DOCTYPE html><html><body><?php$x = array("a" => "red", "b" => "green"); $y = array("c" => "blue", "d" => "yellow"); $z = $x + $y; // $x 與 $y 的聯(lián)合var_dump($z);echo "<br>";var_dump($x == $y);echo "<br>";var_dump($x === $y);echo "<br>";var_dump($x != $y);echo "<br>";var_dump($x <> $y);echo "<br>";var_dump($x !== $y);?> </body></html>
運(yùn)行結(jié)果:
array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" }
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)
條件語句用于基于不同條件執(zhí)行不同的動作
9.1 PHP 條件語句在您編寫代碼時(shí),經(jīng)常會希望為不同的決定執(zhí)行不同的動作。您可以在代碼中使用條件語句來實(shí)現(xiàn)這一點(diǎn)。
在 PHP 中,我們可以使用以下條件語句:
if 語句 - 如果指定條件為真,則執(zhí)行代碼if...else 語句 - 如果條件為 true,則執(zhí)行代碼;如果條件為 false,則執(zhí)行另一端代碼if...elseif....else 語句 - 選擇若干段代碼塊之一來執(zhí)行switch 語句 - 語句多個(gè)代碼塊之一來執(zhí)行9.2 PHP - if 語句if 語句用于在指定條件為 true 時(shí)執(zhí)行代碼。
語法if (條件) { 當(dāng)條件為 true 時(shí)執(zhí)行的代碼;}
下例將輸出 "Have a good day!",如果當(dāng)前時(shí)間 (HOUR) 小于 20:
實(shí)例<?php$t=date("H");if ($t<"20") { echo "Have a good day!";}?>9.3 PHP - if...else 語句
請使用 if....else 語句在條件為 true 時(shí)執(zhí)行代碼,在條件為 false 時(shí)執(zhí)行另一段代碼。
語法if (條件) { 條件為 true 時(shí)執(zhí)行的代碼;} else { 條件為 false 時(shí)執(zhí)行的代碼;}
下例將輸出 "Have a good day!",如果當(dāng)前時(shí)間 (HOUR) 小于 20,否則輸出 "Have a good night!":
實(shí)例<?php$t=date("H");if ($t<"20") { echo "Have a good day!";} else { echo "Have a good night!";}?>9.4 PHP - if...elseif....else 語句
請使用 if....elseif...else 語句來選擇若干代碼塊之一來執(zhí)行。
語法if (條件) { 條件為 true 時(shí)執(zhí)行的代碼;} elseif (condition) { 條件為 true 時(shí)執(zhí)行的代碼;} else { 條件為 false 時(shí)執(zhí)行的代碼;}
下例將輸出 "Have a good morning!",如果當(dāng)前時(shí)間 (HOUR) 小于 10,如果當(dāng)前時(shí)間小于 20,則輸出 "Have a good day!"。否則將輸出 "Have a good night!":
實(shí)例<?php$t=date("H");if ($t<"10") { echo "Have a good morning!";} elseif ($t<"20") { echo "Have a good day!";} else { echo "Have a good night!";}?>9.5 PHP Switch 語句
switch 語句用于基于不同條件執(zhí)行不同動作。
如果希望有選擇地執(zhí)行若干代碼塊之一,請使用 Switch 語句。
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊。
語法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;}
工作原理:
對表達(dá)式(通常是變量)進(jìn)行一次計(jì)算把表達(dá)式的值與結(jié)構(gòu)中 case 的值進(jìn)行比較如果存在匹配,則執(zhí)行與 case 關(guān)聯(lián)的代碼代碼執(zhí)行后,break 語句阻止代碼跳入下一個(gè) case 中繼續(xù)執(zhí)行如果沒有 case 為真,則使用 default 語句實(shí)例<?phpswitch ($x){case 1: echo "Number 1"; break;case 2: echo "Number 2"; break;case 3: echo "Number 3"; break;default: echo "No number between 1 and 3";}?></body></html>10、PHP while 循環(huán)
PHP while 循環(huán)在指定條件為 true 時(shí)執(zhí)行代碼塊。
10.1 PHP 循環(huán)在編寫代碼時(shí),經(jīng)常需要反復(fù)運(yùn)行同一代碼塊。可以使用循環(huán)來執(zhí)行這樣的任務(wù),而不是在腳本中添加若干幾乎相等的代碼行。
在 PHP 中,我們有以下循環(huán)語句:
while - 只要指定條件為真,則循環(huán)代碼塊do...while - 先執(zhí)行一次代碼塊,然后只要指定條件為真則重復(fù)循環(huán)for - 循環(huán)代碼塊指定次數(shù)foreach - 遍歷數(shù)組中的每個(gè)元素并循環(huán)代碼塊10.2 PHP while 循環(huán)只要指定的條件為真,while 循環(huán)就會執(zhí)行代碼塊。
語法while (條件為真) { 要執(zhí)行的代碼;}
下例首先把變量 $x 設(shè)置為 1($x=1)。然后執(zhí)行 while 循環(huán),只要 $x 小于或等于 5。循環(huán)每運(yùn)行一次,$x 將遞增 1:
實(shí)例<?php $x=1; while($x<=5) { echo "這個(gè)數(shù)字是:$x <br>"; $x++;} ?>10.3 PHP do...while 循環(huán)
do...while 循環(huán)首先會執(zhí)行一次代碼塊,然后檢查條件,如果指定條件為真,則重復(fù)循環(huán)。
語法do { 要執(zhí)行的代碼;} while (條件為真);
下面的例子首先把變量 $x 設(shè)置為 1($x=1)。然后,do while 循環(huán)輸出一段字符串,然后對變量 $x 遞增 1。隨后對條件進(jìn)行檢查($x 是否小于或等于 5)。只要 $x 小于或等于 5,循環(huán)將會繼續(xù)運(yùn)行:
實(shí)例<?php $x=1; do { echo "這個(gè)數(shù)字是:$x <br>"; $x++;} while ($x<=5);?>
請注意,do while 循環(huán)只在執(zhí)行循環(huán)內(nèi)的語句之后才對條件進(jìn)行測試。這意味著 do while 循環(huán)至少會執(zhí)行一次語句,即使條件測試在第一次就失敗了。
下面的例子把 $x 設(shè)置為 6,然后運(yùn)行循環(huán),隨后對條件進(jìn)行檢查:
實(shí)例<?php $x=6;do { echo "這個(gè)數(shù)字是:$x <br>"; $x++;} while ($x<=5);?>10.4 PHP for 循環(huán)
PHP for 循環(huán)執(zhí)行代碼塊指定的次數(shù)。
如果已提前確定腳本運(yùn)行的次數(shù),可以使用 for 循環(huán)。
語法for (init counter; test counter; increment counter) { code to be executed;}
參數(shù):
init counter:初始化循環(huán)計(jì)數(shù)器的值test counter:: 評估每個(gè)循環(huán)迭代。如果值為 TRUE,繼續(xù)循環(huán)。如果它的值為 FALSE,循環(huán)結(jié)束。increment counter:增加循環(huán)計(jì)數(shù)器的值下面的例子顯示了從 0 到 10 的數(shù)字:
實(shí)例<?php for ($x=0; $x<=10; $x++) { echo "數(shù)字是:$x <br>";} ?>10.5 PHP foreach 循環(huán)
foreach 循環(huán)只適用于數(shù)組,并用于遍歷數(shù)組中的每個(gè)鍵/值對。
語法foreach ($array as $value) { code to be executed;}
每進(jìn)行一次循環(huán)迭代,當(dāng)前數(shù)組元素的值就會被賦值給 $value 變量,并且數(shù)組指針會逐一地移動,直到到達(dá)最后一個(gè)數(shù)組元素。
下面的例子演示的循環(huán)將輸出給定數(shù)組($colors)的值:
實(shí)例<!DOCTYPE html><html><body><?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>";}?> </body></html>
運(yùn)行結(jié)果:
red
green
blue
yellow
PHP 的真正力量來自它的函數(shù):它擁有超過 1000 個(gè)內(nèi)建的函數(shù)。
11.1 PHP 用戶定義函數(shù)除了內(nèi)建的 PHP 函數(shù),我們可以創(chuàng)建我們自己的函數(shù)。
函數(shù)是可以在程序中重復(fù)使用的語句塊。
頁面加載時(shí)函數(shù)不會立即執(zhí)行。
函數(shù)只有在被調(diào)用時(shí)才會執(zhí)行。
11.2 在 PHP 創(chuàng)建用戶定義函數(shù)用戶定義的函數(shù)聲明以關(guān)單 "function" 開頭:
語法function functionName() { 被執(zhí)行的代碼;}
注釋:函數(shù)名能夠以字母或下劃線開頭(而非數(shù)字)。
注釋:函數(shù)名對大小寫不敏感。
提示:函數(shù)名應(yīng)該能夠反映函數(shù)所執(zhí)行的任務(wù)。
在下面的例子中,我們創(chuàng)建名為 "writeMsg()" 的函數(shù)。打開的花括號({)指示函數(shù)代碼的開始,而關(guān)閉的花括號(})指示函數(shù)的結(jié)束。此函數(shù)輸出 "Hello world!"。如需調(diào)用該函數(shù),只要使用函數(shù)名即可:
實(shí)例<?phpfunction writeMsg() { echo "Hello world!";}writeMsg(); // 調(diào)用函數(shù)?>11.3 PHP 函數(shù)參數(shù)
可以通過參數(shù)向函數(shù)傳遞信息。參數(shù)類似變量。
參數(shù)被定義在函數(shù)名之后,括號內(nèi)部。您可以添加任意多參數(shù),只要用逗號隔開即可。
下面的例子中的函數(shù)有一個(gè)參數(shù)($fname)。當(dāng)調(diào)用 familyName() 函數(shù)時(shí),我們同時(shí)要傳遞一個(gè)名字(例如 Bill),這樣會輸出不同的名字,但是姓氏相同:
實(shí)例<!DOCTYPE html><html><body><?phpfunction familyName($fname) { echo "$fname Zhang.<br>";}familyName("Li");familyName("Hong");familyName("Tao");familyName("Xiao Mei");familyName("Jian");?></body></html>
運(yùn)行結(jié)果
Li Zhang.
Hong Zhang.
Tao Zhang.
Xiao Mei Zhang.
Jian Zhang.
下面的例子中的函數(shù)有兩個(gè)參數(shù)($fname 和 $year):
實(shí)例<!DOCTYPE html><html><body><?phpfunction familyName($fname,$year) { echo "$fname Zhang. Born in $year <br>";}familyName("Li","1975");familyName("Hong","1978");familyName("Tao","1983");?></body></html>
運(yùn)行結(jié)果:
Li Zhang. Born in 1975
Hong Zhang. Born in 1978
Tao Zhang. Born in 1983
下面的例子展示了如何使用默認(rèn)參數(shù)。如果我們調(diào)用沒有參數(shù)的 setHeight() 函數(shù),它的參數(shù)會取默認(rèn)值:
實(shí)例<?phpfunction setHeight($minheight=50) { echo "The height is : $minheight <br>";}setHeight(350);setHeight(); // 將使用默認(rèn)值 50setHeight(135);setHeight(80);?>11.5 PHP 函數(shù) - 返回值
如需使函數(shù)返回值,請使用 return 語句:
實(shí)例<!DOCTYPE html><html><body><?phpfunction sum($x,$y) { $z=$x+$y; return $z;}echo "5 + 10 = " . sum(5,10) . "<br>";echo "7 + 13 = " . sum(7,13) . "<br>";echo "2 + 4 = " . sum(2,4);?></body></html>
運(yùn)行結(jié)果:
5 + 10 = 15
7 + 13 = 20
2 + 4 = 6
數(shù)組能夠在單獨(dú)的變量名中存儲一個(gè)或多個(gè)值。
實(shí)例數(shù)組在單個(gè)變量中存儲多個(gè)值:
<?php$cars=array("Volvo","BMW","SAAB");echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?>12.1 什么是數(shù)組?
數(shù)組是特殊的變量,它可以同時(shí)保存一個(gè)以上的值。
如果有一個(gè)項(xiàng)目列表(例如汽車品牌列表),在單個(gè)變量中存儲這些品牌名稱是這樣的:
$cars1="Volvo";$cars2="BMW";$cars3="SAAB";
不過,假如希望對變量進(jìn)行遍歷并找出特定的那個(gè)值?或者如果需要存儲 300 個(gè)汽車品牌,而不是 3 個(gè)呢?
解決方法是創(chuàng)建數(shù)組!
數(shù)組能夠在單一變量名中存儲許多值,并且能夠通過引用下標(biāo)號來訪問某個(gè)值。
12.2 在 PHP 中創(chuàng)建數(shù)組在 PHP 中, array() 函數(shù)用于創(chuàng)建數(shù)組:
array();
在 PHP 中,有三種數(shù)組類型:
索引數(shù)組 - 帶有數(shù)字索引的數(shù)組關(guān)聯(lián)數(shù)組 - 帶有指定鍵的數(shù)組多維數(shù)組 - 包含一個(gè)或多個(gè)數(shù)組的數(shù)組12.3 PHP 索引數(shù)組有兩種創(chuàng)建索引數(shù)組的方法:
索引是自動分配的(索引從 0 開始):
$cars=array("Volvo","BMW","SAAB");
或者也可以手動分配索引:
$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="SAAB";
下面的例子創(chuàng)建名為 $cars 的索引數(shù)組,為其分配三個(gè)元素,然后輸出包含數(shù)組值的一段文本:
實(shí)例<!DOCTYPE html><html><body><?php$cars=array("Volvo","BMW","SAAB"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";?></body></html>
運(yùn)行結(jié)果:
I like Volvo, BMW and SAAB.
12.4 獲得數(shù)組的長度 - count() 函數(shù)count() 函數(shù)用于返回?cái)?shù)組的長度(元素?cái)?shù)):
實(shí)例<?php$cars=array("Volvo","BMW","SAAB");echo count($cars);?>
上例輸出 3
12.5 遍歷索引數(shù)組如需遍歷并輸出索引數(shù)組的所有值,可以使用 for 循環(huán),就像這樣:
實(shí)例<?php$cars=array("Volvo","BMW","SAAB");$arrlength=count($cars);for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>";}?>12.6 PHP 關(guān)聯(lián)數(shù)組
關(guān)聯(lián)數(shù)組是使用您分配給數(shù)組的指定鍵的數(shù)組。
有兩種創(chuàng)建關(guān)聯(lián)數(shù)組的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
或者:
$age['Peter']="35";$age['Ben']="37";$age['Joe']="43";
隨后可以在腳本中使用指定鍵:
實(shí)例<!DOCTYPE html><html><body><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");echo "Peter is " . $age['Peter'] . " years old.";?></body></html>
以上例子輸出:Peter is 43 years old.
12.7 遍歷關(guān)聯(lián)數(shù)組如需遍歷并輸出關(guān)聯(lián)數(shù)組的所有值,可以使用 foreach 循環(huán),就像這樣:
實(shí)例<!DOCTYPE html><html><body><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>";}?></body></html>
運(yùn)行結(jié)果:
Key=Bill, Value=35
Key=Steve, Value=37
Key=Peter, Value=43
在PHP 高級知識中再介紹。
13、PHP 數(shù)組排序數(shù)組中的元素能夠以字母或數(shù)字順序進(jìn)行升序或降序排序。
13.1 PHP - 數(shù)組的排序函數(shù)PHP 數(shù)組排序函數(shù)如下 :
下面的例子按照字母升序?qū)?shù)組 $cars 中的元素進(jìn)行排序:
實(shí)例<!DOCTYPE html><html><body><?php$cars=array("Volvo","BMW","SAAB");sort($cars);$clength=count($cars);for($x=0;$x<$clength;$x++) { echo $cars[$x]; echo "<br>"; }?></body></html>
運(yùn)行結(jié)果:
BMW
SAAB
Volvo
下面的例子按照數(shù)字升序?qū)?shù)組 $numbers 中的元素進(jìn)行排序:
實(shí)例<?php$numbers=array(3,5,1,22,11);sort($numbers);?>13.3 對數(shù)組進(jìn)行降序排序 - rsort()
下面的例子按照字母降序?qū)?shù)組 $cars 中的元素進(jìn)行排序:
實(shí)例<?php$cars=array("Volvo","BMW","SAAB");rsort($cars);?>
下面的例子按照數(shù)字降序?qū)?shù)組 $numbers 中的元素進(jìn)行排序:
實(shí)例<?php$numbers=array(3,5,1,22,11);rsort($numbers);?>13.4 根據(jù)值對數(shù)組進(jìn)行升序排序 - asort()
下面的例子根據(jù)值對關(guān)聯(lián)數(shù)組進(jìn)行升序排序:
實(shí)例<!DOCTYPE html><html><body><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");asort($age);foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; }?></body></html>
運(yùn)行結(jié)果:
Key=Bill, Value=35
Key=Steve, Value=37
Key=Peter, Value=43
下面的例子根據(jù)鍵對關(guān)聯(lián)數(shù)組進(jìn)行升序排序:
實(shí)例<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");ksort($age);?>13.6 根據(jù)值對數(shù)組進(jìn)行降序排序 - arsort()
下面的例子根據(jù)值對關(guān)聯(lián)數(shù)組進(jìn)行降序排序:
實(shí)例<!DOCTYPE html><html><body><?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");arsort($age);foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; }?></body></html>
運(yùn)行結(jié)果:
Key=Peter, Value=43
Key=Steve, Value=37
Key=Bill, Value=35
下面的例子根據(jù)鍵對關(guān)聯(lián)數(shù)組進(jìn)行降序排序:
實(shí)例<?php$age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");krsort($age);?>14、PHP 全局變量 - 超全局變量
超全局變量 在 PHP 4.1.0 中引入,是在全部作用域中始終可用的內(nèi)置變量。
14.1 PHP 全局變量 - 超全局變量PHP 中的許多預(yù)定義變量都是“超全局的”,這意味著它們在一個(gè)腳本的全部作用域中都可用。在函數(shù)或方法中無需執(zhí)行 global $variable; 就可以訪問它們。
這些超全局變量是:
$GLOBALS$_SERVER$_REQUEST$_POST$_GET$_FILES$_ENV$_COOKIE$_SESSION14.2 $GLOBALS — 引用全局作用域中可用的全部變量$GLOBALS 這種全局變量用于在 PHP 腳本中的任意位置訪問全局變量(從函數(shù)或方法中均可)。
PHP 在名為 $GLOBALS[index] 的數(shù)組中存儲了所有全局變量。變量的名字就是數(shù)組的鍵。
下面的例子輸出95,展示了如何使用超級全局變量 $GLOBALS:
實(shí)例<!DOCTYPE html><html><body><?php $x = 30;$y = 65; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];}addition();echo $z;?></body></html>
在上面的例子中,由于 z 是 $GLOBALS 數(shù)組中的變量,因此在函數(shù)之外也可以訪問它。
14.3 PHP $_SERVER$_SERVER 這種超全局變量保存關(guān)于報(bào)頭、路徑和腳本位置的信息。
下面的例子展示了如何使用 $_SERVER 中的某些元素:
實(shí)例<!DOCTYPE html><html><body><?php echo $_SERVER['PHP_SELF'];echo "<br>";echo $_SERVER['SERVER_NAME'];echo "<br>";echo $_SERVER['HTTP_HOST'];echo "<br>";echo $_SERVER['HTTP_REFERER'];echo "<br>";echo $_SERVER['HTTP_USER_AGENT'];echo "<br>";echo $_SERVER['SCRIPT_NAME'];?></body></html>
運(yùn)行結(jié)果;
/example/php/demo_php_global_server.php
www.w3school.com.cn
www.w3school.com.cn
http://www.w3school.com.cn/tiy/s.asp?f=demo_php_global_server
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
/example/php/demo_php_global_server.php
下表列出了您能夠在 $_SERVER 中訪問的最重要的元素:
PHP $_REQUEST 用于收集 HTML 表單提交的數(shù)據(jù)。
下面的例子展示了一個(gè)包含輸入字段及提交按鈕的表單。當(dāng)用戶通過點(diǎn)擊提交按鈕來提交表單數(shù)據(jù)時(shí), 表單數(shù)據(jù)將發(fā)送到 <form> 標(biāo)簽的 action 屬性中指定的腳本文件。在這個(gè)例子中,我們指定文件本身來處理表單數(shù)據(jù)。如果您需要使用其他的 PHP 文件來處理表單數(shù)據(jù),請修改為您選擇的文件名即可。然后,我們可以使用超級全局變量 $_REQUEST 來收集 input 字段的值:
實(shí)例<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">Name: <input type="text" name="fname"><input type="submit"></form><?php $name = $_REQUEST['fname']; echo $name; ?></body></html>14.5 PHP $_POST
PHP $_POST 廣泛用于收集提交 method="post" 的 HTML 表單后的表單數(shù)據(jù)。$_POST 也常用于傳遞變量。
下面的例子展示了一個(gè)包含輸入字段和提交按鈕的表單。當(dāng)用戶點(diǎn)擊提交按鈕來提交數(shù)據(jù)后,表單數(shù)據(jù)會發(fā)送到 <form> 標(biāo)簽的 action 屬性中指定的文件。在本例中,我們指定文件本身來處理表單數(shù)據(jù)。如果您希望使用另一個(gè) PHP 頁面來處理表單數(shù)據(jù),請用更改為您選擇的文件名。然后,我們可以使用超全局變量 $_POST 來收集輸入字段的值:
實(shí)例<html><body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">Name: <input type="text" name="fname"><input type="submit"></form><?php $name = $_POST['fname']; echo $name; ?></body></html>14.6 PHP $_GET
PHP $_GET 也可用于收集提交 HTML 表單 (method="get") 之后的表單數(shù)據(jù)。
$_GET 也可以收集 URL 中的發(fā)送的數(shù)據(jù)。
假設(shè)我們有一張頁面含有帶參數(shù)的超鏈接:
<html><body><a href="test_get.php?subject=PHP&web=W3school.com.cn">測試 $GET</a></body></html>
當(dāng)用戶點(diǎn)擊鏈接 "Test $GET",參數(shù) "subject" 和 "web" 被發(fā)送到 "test_get.php",然后您就能夠通過 $_GET 在 "test_get.php" 中訪問這些值了。
下面的例子是 "test_get.php" 中的代碼:
實(shí)例<html><body><?php echo "Study " . $_GET['subject'] . " at " . $_GET['web'];?></body></html>PHP編程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選