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