版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PHP編程基礎(chǔ)與實(shí)例教程實(shí)驗(yàn)指導(dǎo)書PHP編程基礎(chǔ)與實(shí)例教程實(shí)驗(yàn)指導(dǎo)書預(yù)備實(shí)驗(yàn) 架設(shè)Windows下的PHP開發(fā)測(cè)試服務(wù)器0. 實(shí)驗(yàn)準(zhǔn)備0.1系統(tǒng)環(huán)境和PHP相關(guān)軟件、開發(fā)工具l 操作系統(tǒng):WindowX(Windows95/98/me/XP/NT系列/2000系列/2003)具體到的機(jī)房環(huán)境,請(qǐng)?jiān)赪indowsxp環(huán)境下做l Web服務(wù)器:Apache 2.0.63 (壓縮包文件:apache_2.0.63-win32.exe)l PHP:PHP5.2.11 (壓縮包文件:php-5.2.11-Win32.zip)l 數(shù)據(jù)庫:MySQL 5.1.39 (壓縮包文件:mysql-essentia
2、l-5.1.39-win32.zip)l 腳本編輯器:EditPlus(已安裝好):圖形化編輯環(huán)境,速度慢,功能多,常用于復(fù)雜網(wǎng)頁設(shè)計(jì)注: PHP相關(guān)軟件、開發(fā)工具的獲得:在我的ftp上下載0.2實(shí)驗(yàn)?zāi)康哪軌蚩焖俨渴餡indows下的開發(fā)測(cè)試服務(wù)器環(huán)境,以滿足同學(xué)們?cè)谒奚?、家中自己機(jī)器上學(xué)習(xí)、研究和開發(fā)PHP程序設(shè)計(jì)的需要或是實(shí)際工作的需要。0.3 實(shí)驗(yàn)中的路徑說明為說明問題的簡(jiǎn)單起見,路徑為比較簡(jiǎn)單的示例路徑,但已經(jīng)過測(cè)試。實(shí)際運(yùn)用時(shí),路徑完全可根據(jù)自己需要設(shè)定。1. PHP的安裝和配置1.1安裝 下載PHP-5.2.5-Win32.ZIP軟件包,不需要安裝,在C盤根目錄下建立文件夾C:ph
3、p 。將軟件包解壓縮到本目錄下。 在C:php 目錄下找到php.ini-dist文件,將其名字改為php.ini ,這是php的配置文件。 修改php.ini文件,過程如下:(1) 找到extension_dir=”./” ,改為extension_dir=”C:/php/ext” (2) 找到 “ ;extension=php_mbstring.dll ”去掉前面的“;”(3) 找到 “ ;extension=php_mysql.dll ” 去掉前面的“;”(4) 找到 “ ;extension=php_mysqli.dll ” 去掉前面的“;” 修改完php.ini文件后,保存該文件,并
4、復(fù)制到C:Windows 目錄下。 將C:PHPlibmysql.dll 復(fù)制到C:windowssystem32 目錄下注:操作系統(tǒng)安裝目錄,具體位置見表1表1:操作系統(tǒng)安裝目錄操作系統(tǒng)操作系統(tǒng)安裝目錄Windows95windowsWindows98windowsWindows mewindowswindowsWindows NT系列winntWindows 2000系列winntWindows 2003windows1.2配置通過修改php.ini中的參數(shù)來實(shí)現(xiàn)。對(duì)MySQL而言,若無特殊要求,一般無須配置。因?yàn)镻HP在php.ini中已經(jīng)做好了對(duì)MySQL的配置,所以一般無須修改。2.
5、 Apache的安裝和配置2.1安裝軟件雙擊apache_2.0.63-win32.exe,按照提示,選擇custom安裝方式,然后一路默認(rèn),即完成安裝。注意:如果您的電腦安裝了IIS,請(qǐng)先到控制面板關(guān)閉IIS服務(wù),因?yàn)镮IS服務(wù)器與Apache服務(wù)器都使用一個(gè)端口。2.2配置服務(wù)單擊開始->程序-> Apache HTTP Server 2.2-> Configure Apache Server-> Edit the Apache httpd.conf configuration File,打開Apache的配置文件httpd.conf,按表2提示進(jìn)行配置:注意:每處
6、的配置要想起作用,必須將行首的#號(hào)(注釋符號(hào))去掉;表示一個(gè)或多個(gè)空格表2 Apache配置序號(hào)參數(shù)名和示例參數(shù)值配置方法說明BindAddress(你所用機(jī)器的IP地址)修改地址綁定(指定服務(wù)器地址)LoadModulephp5_modulec:/php/sapi/php5apache.dll添加將PHP配置為Apache的模塊(Apache module)方式Port80修改指定端口ServerAdmin(你的郵箱地址,如ssl)修改指明管理員信箱ServerNamessl修改指明主機(jī)名稱DocumentRoot"d:Websitehtdocs"修改Web文檔發(fā)布主目錄
7、<Directory"d: Websitehtdocs ">修改該處目錄應(yīng)與Web文檔發(fā)布主目錄一致ScriptAlias/php/"c:/php/" AddTypeapplication/x-httpd-php.php Actionapplication/x-httpd-php"/php/php.exe" 添加指明腳本路徑指明PHP腳本擴(kuò)展名指明PHP腳本解釋器程序名DirectoryIndexindex.htmindex.php修改指定默認(rèn)文檔*描述以httpd.conf文件的行文順序進(jìn)行*表中路徑、地址、主機(jī)名、信箱
8、等,實(shí)際配置時(shí)請(qǐng)根據(jù)自己情況進(jìn)行按表1所述,參考Apache配置文件樣本,修改完畢后,保存。測(cè)試配置是否成功。1)在編輯完成后,我們還可以通過 “開始/程序/Apache HTTP Server 2.2/Configure Apache Server/Test Configuration"來測(cè)試配置文件是否有語法錯(cuò)誤等。2)或者打開瀏覽器敲入:http:/localhost 能否見到服務(wù)器到測(cè)試頁面。能見到則配置成功。3. Apache : Web服務(wù)的安裝和啟動(dòng)(1) 啟動(dòng)Apache服務(wù):?jiǎn)螕簦洪_始->程序-> Apache HTTP Server 2.2->
9、Control Apache service-> Start。(默認(rèn)情況下,每次操作系統(tǒng)啟動(dòng)時(shí)自動(dòng)啟動(dòng)該服務(wù),可更改)4. 測(cè)試Apache服務(wù)器對(duì)PHP的支持能力測(cè)試目的:檢驗(yàn)配置后的Apache服務(wù)器是否提供了對(duì)PHP腳本的解釋能力(支持PHP)用EditPlus編寫測(cè)試腳本,存為d:Websitehtdocsceshi.php,內(nèi)容為:<?phpecho phpinfo(); ?>說明:phpinfo()是PHP內(nèi)置函數(shù),用來顯示PHP和Apache配置信息,在瀏覽器中敲入http:/localhost/ceshi.php,回車后若顯示類似圖1的PHP配置頁面(以Win
10、xp下為例),則說明你的Apache服務(wù)器已經(jīng)支持PHP腳本,能夠解釋PHP腳本了;若不顯示類似畫面,則配置有誤,此時(shí)你的Apache不能夠解釋PHP腳本,需重新配置。 圖15. MySQL的安裝和啟動(dòng)數(shù)據(jù)庫服務(wù)器將mysql-essential-5.1.39-win32.zip解壓縮后,雙擊setup.exe,按照提示,選擇custom安裝方式,然后一路默認(rèn),遇到輸入密碼的地方,輸入123作為密碼。測(cè)試安裝是否成功。單擊“開始”,選擇“MySQLMySQL Server5.1MySQL Command Line Client”,會(huì)出現(xiàn)如下圖所示的窗口,然后輸入root密碼,根據(jù)提示操作即可
11、6. 測(cè)試PHP與MySQL的協(xié)同PHP方面:準(zhǔn)備測(cè)試腳本connect.php,存放在d:Websitehtdocs下,其內(nèi)容為:程序2-13:<?$connection=mysql_connect('','root','123') or die('不能連接到MySQL數(shù)據(jù)庫:'.mysql_error();echo '已經(jīng)成功連接MySQL數(shù)據(jù)庫<br />' mysql_select_db('test')or die('不能選擇數(shù)據(jù)庫');
12、echo '連接test數(shù)據(jù)庫已經(jīng)成功'?>(1) 測(cè)試步驟在瀏覽器地址欄輸入:http:/localhost/connect.php,回車,顯示如圖2所示,則表明PHP 與MySQL能夠協(xié)同工作了。 圖2實(shí)驗(yàn)一 PHP基本語法實(shí)驗(yàn)0 實(shí)驗(yàn)準(zhǔn)備0.1實(shí)驗(yàn)環(huán)境和相關(guān)工具軟件具體到的機(jī)房環(huán)境,請(qǐng)?jiān)赪indowsxp環(huán)境下做本實(shí)驗(yàn):l 操作系統(tǒng):Windowsxpl Web服務(wù)器:Apache 2.0.63 默認(rèn)發(fā)布文檔路徑:c:Apachehtdocsl PHP:PHP5.2.11 安裝路徑:c:phpl 數(shù)據(jù)庫:MySQL 5.1.39 使用默認(rèn)路徑l 腳本編輯器:記事本或
13、EditPlus-v3.11.463H或Macromedia Dreamweaver MX中文版注意:使用以上腳本編輯器,若要保存為.php文件,必須在保存時(shí)指明擴(kuò)展名為.php尤其是記事本,必須在保存時(shí),單擊“保存類型”下拉框,選擇“所有文件(*.*)”類型,然后指定文件擴(kuò)展名是.php,單擊“保存”按鈕后,保存的文件才能保證是.php文件。常見錯(cuò)誤是直接保存,導(dǎo)致保存的文件其實(shí)是文本文件,如abc.php.txt等以.txt為擴(kuò)展名的文本文件。0.2實(shí)驗(yàn)?zāi)康暮蛢?nèi)容實(shí)驗(yàn)?zāi)康模菏炀氄莆誔HP語言的基礎(chǔ)語法實(shí)驗(yàn)內(nèi)容:從7個(gè)方面完成PHP基本語法實(shí)際體驗(yàn),分列如下: 一、詞法結(jié)構(gòu)n 大小寫n 語句
14、和分號(hào)n 注釋n 標(biāo)識(shí)符二、數(shù)據(jù)類型n 字符串型n 布爾型n 數(shù)組型n 對(duì)象型n 資源型n 各種數(shù)據(jù)類型的檢測(cè)三、變量n 變量的變量n 變量的作用域n 垃圾收集:變量的內(nèi)存管理四、表達(dá)式和操作符n 隱式類型轉(zhuǎn)換n 字符串連接操作符n 自增和自減操作符n 類型轉(zhuǎn)換操作符n 其他操作符五、流控制語句n if語句n switch語句n while語句n for語句n foreach語句n exit語句n return語句(2-12)六、包含代碼七、在Web頁面中嵌入PHP0.3 實(shí)驗(yàn)中的約定所有實(shí)驗(yàn)程序均與講義中的例子相對(duì)應(yīng),如程序1-1.php,對(duì)應(yīng)講義中的例子例1-1。1詞法結(jié)構(gòu)1.1大小寫敏感
15、預(yù)備知識(shí) 變量區(qū)分大小寫,內(nèi)置結(jié)構(gòu)(while,for,if等)及關(guān)鍵字(echo,class等)不區(qū)分大小寫【2-1】大小寫敏感的例子PHP程序2-1送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$name="hello1,world1"$NAME="hello2,world2"$NaME="hello3,world3"echo "$name=$namen"ECHO "$NAME=$NAMEn"EcHo "$NaME=$NaME&quo
16、t;?>注意:要使運(yùn)行結(jié)果達(dá)到真正分行(和HTML輸出一致),請(qǐng)將程序2-1中的n換成<br>,即可實(shí)現(xiàn),如下例【2-1br】修改程序2-1后的程序2-1br,直接實(shí)現(xiàn)分行(將程序2-1中的n換成<br>)PHP程序2-1br送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$name="hello1,world1"$NAME="hello2,world2"$NaME="hello3,world3"echo "$name=$name<br>"
17、;ECHO "$NAME=$NAME<br>":EcHo "$NaME=$NaME"?>原因:瀏覽器不解釋(或者說不識(shí)別,或忽略)經(jīng)PHP解釋n而成的空白換行,只有遇到<br>這個(gè)HTML中的換行標(biāo)記,才解釋成換行。為了直接達(dá)到預(yù)期換行效果,將不再使用n,而是使用<br>1.2語句和分號(hào)預(yù)備知識(shí) 簡(jiǎn)單語句 復(fù)雜語句 分號(hào)的省略【2-2】語句和分號(hào)PHP程序2-2送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$a=10;$b=10;if($a=$b) echo &qu
18、ot;注意:<br>" /簡(jiǎn)單語句 echo "$a的值等于$b的值<br>" /上面部分為復(fù)雜語句echo "hello,world" /此處分號(hào)可省略?>1.3注釋預(yù)備知識(shí) 在必要的地方做注釋 注釋的形式及各自的適用處:Shell形式(#)、C+形式(/)、C形式(/* */)【2-6】C形式的注釋作用PHP程序2-6送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$l=12; $m=13;/*注釋從這里開始?><p> Some stuff you
19、 want to be HTML.</p><?=$n=14;*/ echo ("l=$l m=$m n=$n");?><p>Now <b>this</b> is regular HTML</p>1.4標(biāo)識(shí)符(常量標(biāo)識(shí)符)預(yù)備知識(shí) 使用define()設(shè)置常量標(biāo)識(shí)符【2-7】使用define()設(shè)置常量標(biāo)識(shí)符PHP程序2-7送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽 顯示在瀏覽器頁面中的結(jié)果)<?phpdefine(PUB,”O(jiān)Reilly & Associates”);
20、echo PUB;?>2 數(shù)據(jù)類型2.1字符串預(yù)備知識(shí) 字符串的表示 單引號(hào)和雙引號(hào)在字符轉(zhuǎn)義上的不同作用:?jiǎn)我?hào)僅轉(zhuǎn)義反斜杠和單引號(hào)【2-8】單引號(hào)和雙引號(hào)在字符轉(zhuǎn)義上的不同作用PHP程序2-8送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$name=”Sun Shoulong”;/雙引號(hào)中的變量值將被輸出echo “Hi,$name<br>”; echo Hi,$name;/單引號(hào)中的變量名將被輸出,因?yàn)閱我?hào)不認(rèn)為$name是變量?>注意:雙引號(hào)中的變量,若前面不加反斜杠進(jìn)行轉(zhuǎn)義(將$原樣輸出),則在輸出字串的時(shí)候?qū)?/p>
21、輸出變量中的值【2-9】單引號(hào)僅支持的字符轉(zhuǎn)義:反斜杠和單引號(hào)PHP程序2-9送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$dos_dir=c:windowssystem;$publisher=Tim OReilly;echo “$dos_dir $publisher”;?>2.2布爾型預(yù)備知識(shí)PHP中為false值的情況【2-10】判斷布爾值PHP程序2-10送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$x=5;$y=”;if($x) echo $x有一個(gè)true值<br>if(!$x) ech
22、o $x有一個(gè)false值<br>if($y) echo $y有一個(gè)true值<br>if(!$y) echo $y有一個(gè)false值<br>?>2.3數(shù)組型預(yù)備知識(shí):數(shù)組的創(chuàng)建、遍歷;鍵名:數(shù)組元素的下標(biāo)名稱,一般是從0開始的整數(shù),也可以是字符串;鍵值:數(shù)組元素中存儲(chǔ)的值【2-11】數(shù)組的創(chuàng)建、遍歷:發(fā)明家記錄PHP程序2-11送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#以數(shù)字鍵名引用的方式,通過給各數(shù)組元素賦值的方法#直接創(chuàng)建人名數(shù)組$person$person0=”Edison”;$person1=”Wa
23、nkel”;$person2=”Crapper”;/*上面的方法可用array方法替代,創(chuàng)建后鍵名也是數(shù)字的,按賦值先后,從0開始依次遞增$person=array(Edison,Wankel,Crapper);/一條語句*/#以字串鍵名引用的方式,通過給各數(shù)組元素賦值的方法#直接創(chuàng)建發(fā)明家數(shù)組$creator$creatorLight bulb=”Edison”;$creatorRotary Engine=”Wankel”;$creatorToilet=”Crapper”;/*上面的方法可用array方法替代,創(chuàng)建后鍵名也是數(shù)字的,按賦值先后,從0開始依次遞增$creator=array(L
24、ight bulb=>Edison, Rotary Engine=>Wankel, Toilet=>Crapper);*/#遍歷數(shù)組$person,顯示其內(nèi)容foreach($person as $name)/訪問每個(gè)鍵 echo “Hello,$name<br>”;#遍歷數(shù)組$creator,顯示其內(nèi)容foreach($creator as $invention=>$inventor) echo “$invention was created by $inventor<br>”;?>2.4對(duì)象型預(yù)備知識(shí)類:OOP的單元,是包含屬性(變量)
25、和方法(函數(shù))的結(jié)構(gòu)定義類的定義對(duì)象的創(chuàng)建、引用其屬性和方法【2-12】類和對(duì)象的簡(jiǎn)單例子PHP程序2-12送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?phpClass Person var $name=; function name($newname=NULL)if(!is_null($newname) $this->name=$newname;return $this->name; $ed=new Person;$ed->name(Edison);printf(“Hello,%s<br>”,$ed->name);$tc=
26、new Person;$tc->name(Crapper);printf(“Look out below,%s<br>”,$tc->name);?>2.5數(shù)據(jù)類型的檢測(cè)預(yù)備知識(shí)數(shù)據(jù)類型檢測(cè)函數(shù)【2-14】數(shù)據(jù)類型檢測(cè)PHP程序2-14送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php$x=2.5;if(is_int($x) echo '$x是整型變量'if(is_float($x) echo '$x是浮點(diǎn)型變量'if(is_string($x) echo '$x是字串型變量'if(i
27、s_bool($x) echo '$x是布爾型變量'if(is_array($x) echo '$x是數(shù)組型變量'if(is_object($x) echo '$x是對(duì)象型變量'if(is_resource($x) echo '$x是資源型變量'if(is_null($x) echo '$x是NULL型變量'?>3 變量3.1變量的變量預(yù)備知識(shí)變量的概念和作用;變量的聲明和使用;變量的變量【2-15】PHP變量無類型檢查,無須聲明,類型隨用隨變PHP程序2-15送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在
28、瀏覽器頁面中的結(jié)果)<?php#PHP變量無類型檢查$what="Fred"echo "$what的值=$what<br>"if(is_string($what) echo "$what是字符串型變量<hr>"$what=35;echo "$what的值=$what<br>"if(is_int($what) echo "$what是整型變量<hr>"$what=array('Fred','35','wi
29、lma');echo "$what的值為:<br>"foreach($what as $e) echo "$e<br>"if(is_array($what) echo "$what是數(shù)組型變量"?>【2-16】空變量的例子PHP程序2-16送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#一個(gè)沒有設(shè)置值的變量,它的值是NULL,#表示它是一個(gè)空變量if($uninitialized_variable=NULL) /此句可換為: if(is_null($unini
30、tialized_variable) echo "$uninitialized_variable是空變量"?>【2-17】變量的變量PHP程序2-17送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#變量的變量$r='i'$r=1;echo "因?yàn)?r=$r<br>"echo "所以$r=$r<br>"echo "又因?yàn)?r=".$r."<br>"echo '故$r='.$r;echo
31、"<hr>:-)你明白了嗎?"?>3.2變量的作用域預(yù)備知識(shí)變量按其作用域分為:局部變量、全局變量。靜態(tài)變量、函數(shù)的參數(shù)屬于局部變量;從局部訪問全局變量的方法;從全局訪問局部變量的方法【2-19】不能從全局(函數(shù)外部)直接訪問局部變量PHP程序2-19送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#下面的函數(shù)更新了一個(gè)局部變量而不是全局變量function update_counter() $counter+;/執(zhí)行完本句即函數(shù)結(jié)束時(shí),$counter的值被PHP拋棄,該變量所占內(nèi)存資源被收回$counter=10;u
32、pdate_counter();echo $counter;/這個(gè)$counter是全局變量?>【2-20】從局部訪問全局變量,方法1:使用global關(guān)鍵字聲明PHP程序2-20送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#在函數(shù)內(nèi)訪問全局變量-方法1:使用global關(guān)鍵字聲明function update_counter() global $counter;/告訴PHP,$counter是全局中那個(gè)$counter $counter+;$counter=10;update_counter();echo $counter;?>【2-21】
33、從局部訪問全局變量,方法2:引用全局變量數(shù)組$GLOBALSPHP程序2-21送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#在函數(shù)內(nèi)訪問全局變量-方法2:引用全局變量數(shù)組$GLOBALS中鍵名為counter的那個(gè)元素function update_counter() $GLOBALS'counter'+;/也可以寫成:$GLOBALScounter+;$counter=10;update_counter();echo $counter;?>【2-22】使用靜態(tài)變量的好處::使全局可間接訪問到PHP程序2-22送到用戶瀏覽器解釋后顯
34、示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#使用靜態(tài)變量的方法,強(qiáng)制保留局部變量上#次調(diào)用結(jié)束時(shí)的值,使全局可間接訪問到function update_counter() static $counter=0;/這個(gè)$counter是局部的變量,聲明為靜態(tài),并賦初始值0 $counter+; echo "局部靜態(tài)變量$counter這時(shí)的值=$counter<br>"$counter=10;/這個(gè)$counter是全局的變量update_counter();update_counter();echo "全局變量$counter這時(shí)的值
35、=$counter"?>【2-23】全局不可直接訪問局部變量(可通過將局部變量聲明為靜態(tài)的方法,參見2-22)PHP程序2-23送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#函數(shù)參數(shù)作為一種局部變量,是不能直接被外部訪問的function greet($name) echo "Hello,$name<br>"greet("孫壽龍");if($name=null)echo '$name是一個(gè)空變量,訪問不到!'?>3.3垃圾收集預(yù)備知識(shí)無用變量的收回;PHP內(nèi)存管理;
36、引用計(jì)算;寫時(shí)復(fù)制【2-24】PHP的寫時(shí)復(fù)制PHP程序2-24<?php#PHP通過使用引用計(jì)算和寫時(shí)復(fù)制進(jìn)行內(nèi)存管理從而節(jié)省了時(shí)間和內(nèi)存#一、寫時(shí)復(fù)制/對(duì)共享同一首地址的多個(gè)變量,修改其中一個(gè),如$worker,則此時(shí)為$worker分配新內(nèi)存空間,/將其新元素內(nèi)容寫入該空間,將其舊元素內(nèi)容復(fù)制到該空間/這就是寫時(shí)復(fù)制/發(fā)生寫時(shí)復(fù)制,為$worker開辟新空間,將$worker最新內(nèi)容復(fù)制到這里,以不影響$other的內(nèi)容$worker1=36; /同時(shí)發(fā)生引用計(jì)算:原$worker與$other共享的那個(gè)首地址引用的變量名減少1個(gè),只剩下了$other(引用計(jì)數(shù)減少1)echo &
37、quot;修改數(shù)組$worker的第二個(gè)元素,發(fā)生寫時(shí)復(fù)制及引用計(jì)算后,<br>"echo "新數(shù)組$other的內(nèi)容:<br>"foreach($other as $a) echo "$a<br>"echo "新數(shù)組$worker的內(nèi)容:<br>"foreach($worker as $b) echo "$b<br>" echo "是不是很好玩?"?>PHP解釋結(jié)果(HTML輸出)(右鍵單擊該頁面,在快捷菜單中單擊“查
38、看源文件”命令可看到)送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)【2-25】垃圾收集:變量的回收使用unset()回收變量(釋放變量)PHP程序2-25送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#垃圾收集:變量的回收使用unset()釋放變量echo "從未對(duì)$name賦過值,這時(shí):<br>"$s1=isset($name);/$s1為falseif($s1) echo "$name已存在,其值=$name<br>"else echo "$name不存在
39、,其值=$name<br>"$name="Fred"$s1=isset($name);/$s1為trueif($s1) echo "$name已存在,其值=$name<br>"else echo "$name不存在,其值=$name<br>"echo "現(xiàn)在從內(nèi)存中釋放(刪除)$name:<br>"unset($name);$s1=isset($name);/$s1為falseif($s1) echo "$name已存在,其值=$name<b
40、r>"else echo "$name不存在,其值=$name<br>"?>4. 表達(dá)式和操作符4.1隱式類型轉(zhuǎn)換預(yù)備知識(shí) 數(shù)字間進(jìn)行字符串拼接的規(guī)則;字符串轉(zhuǎn)換數(shù)字后的數(shù)字值規(guī)則【2-26】數(shù)字間進(jìn)行字符串拼接的規(guī)則:數(shù)字首先變?yōu)樽执?,然后再拼接PHP程序2-26送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#數(shù)字減進(jìn)行字符串連接的類型轉(zhuǎn)換:數(shù)字都變?yōu)樽址?,再連接$a=3;$b=2.74;$c=$a.$b;echo "$c=$c"?>【2-27】字符串轉(zhuǎn)換數(shù)字后的
41、數(shù)字值規(guī)則假定以數(shù)字開始,該數(shù)字即為轉(zhuǎn)換后的數(shù)字值;若未找到數(shù)字則轉(zhuǎn)換后的數(shù)字值為0;若開頭的數(shù)字包含一個(gè)句點(diǎn)或大寫或小寫的E,則轉(zhuǎn)換后的數(shù)字值為浮點(diǎn)型PHP程序2-27送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#字符串轉(zhuǎn)成數(shù)字后的數(shù)字值規(guī)則$a="9 Lives"-1;/8(int)$b="3.14 Pies"*2;/6.28(float)$c="9 lives."-1;/8(float)$d="1E3 Points of Light"+1;/1101echo "
42、;$a=$a<br>"echo "$b=$b<br>"echo "$c=$c<br>"echo "$d=$d<br>"?>4.2字符串連接操作符預(yù)備知識(shí) 字符串連接操作符;數(shù)字與字串連接時(shí),數(shù)字先轉(zhuǎn)換成字串【2-28】數(shù)字在與字符串連接時(shí),先自動(dòng)變成字符串PHP程序2-28送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#數(shù)字在與字符串連接時(shí),先自動(dòng)變成字符串$n=5;$s="There are ".$n.
43、" ducks"echo "$s=$s"?>類似的,如2-29:【2-29】和2-28差不多的程序PHP程序2-29送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#效果同程序2-28$n=5;$s="There are $n ducks"echo "$s=$s"?>4.3自增自減操作符預(yù)備知識(shí) 數(shù)字的自增自減(按數(shù)字順序);字母的自增自減(按字母順序)【2-30】PHP程序2-30送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<
44、?php#字母的自增自減運(yùn)算echo "小寫字母自增:<hr>"$a="a"while($a<="z") echo $a+; echo "<br>"echo "大寫字母自增:<hr>" $a="A"while($a<="Z") echo $a+; echo "<br>"?> <font color=red>請(qǐng)編程驗(yàn)證:</font><br&g
45、t;<table width="75%" border="1"> <tr> <td>字符串</td><td>字符串+</td> </tr><tr> <td>"a"</td><td>"b"</td> </tr><tr> <td>"z"</td><td>
46、;"a"</td> </tr><tr> <td>"spaz"</td><td>"spba"</td> </tr> <tr> <td>"K9"</td><td>"L0"</td> </tr> <tr> <td>"
47、42"</td><td>"43"</td> </tr></table>(該圖顯示的是部分結(jié)果)4.4類型轉(zhuǎn)換操作符預(yù)備知識(shí) 類型轉(zhuǎn)換操作符;類型轉(zhuǎn)換的臨時(shí)性;類型轉(zhuǎn)換的真正實(shí)現(xiàn)【2-31】類型轉(zhuǎn)換的臨時(shí)性PHP程序2-31送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#轉(zhuǎn)換類型只是讓別人臨時(shí)以某種格式接收自己,并不影響自己的本來面貌$a="5"$b=(int)$a;/這時(shí),$a仍為字符串型if(is_string(
48、$a) echo '$a仍是字符串型'?>【2-32】類型轉(zhuǎn)換的真正實(shí)現(xiàn)PHP程序2-32送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#轉(zhuǎn)換自身類型并保值$a="5"if(is_string($a) echo "開始,$a是字符串型,值為:$a<br>"$a=(int)$a;if(is_int($a) echo "轉(zhuǎn)換類型并自賦值后,$a是整型,值為:$a<br>"?>4.5其他操作符預(yù)備知識(shí) 錯(cuò)誤抑制操作符(例子程序見2-13);三
49、元操作符【2-33】三元操作符PHP程序2-33送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#三元操作符使用的例子$a=1;$b=2;echo "$a=$a,$b=$b<br>"echo $a>$b?'$a>$b':'$a<$b'?>5.流控制語句5.1 if語句預(yù)備知識(shí) if結(jié)構(gòu)、if-else結(jié)構(gòu)、if-else鏈接(層進(jìn))、if-elseif結(jié)構(gòu)、if-else-endif結(jié)構(gòu)【2-34】使用if-else-endif結(jié)構(gòu)PHP程序2-34送到用戶瀏覽
50、器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#if語句的使用echo "常見使用方式:C語言的方式:<br>"$user_validated=true;if($user_validated) echo "歡迎你!<hr>" $greed=1;else echo "對(duì)不起,禁止訪問!<hr>" exit;echo "還可使用PHP提供的另一種方式:if-endif結(jié)構(gòu)<br>"$user_validated=""if($u
51、ser_validated): /注意冒號(hào) echo "歡迎你!<hr>" $greed=1;else:/注意冒號(hào) echo "對(duì)不起,禁止訪問!<hr>" exit;endif; /句尾是分號(hào),不是冒號(hào)?>【2-35】if語句的使用:嵌入到HTML中(表單驗(yàn)證)PHP程序2-35送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#if語句的使用:嵌入到HTML中(表單驗(yàn)證)$name="Sun Shoulong"$user_validated="1"
52、if($user_validated): ?><table border=1> <tr> <td>歡迎你:</td><td><?=$name?></td> </tr></table><? else:?>請(qǐng)重新登陸!<? endif;/*此處的分號(hào)可省略*/ ?>【2-36】if語句的鏈接(層進(jìn))(使用if-else結(jié)構(gòu))PHP程序2-36送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#if語句的鏈接(層進(jìn)) (使用if-
53、else結(jié)構(gòu))$fenshu=61;echo "你的分?jǐn)?shù)是:$fenshu,屬于:"if($fenshu>90) print("優(yōu)秀");else if($fenshu>80&&$fenshu<=90) print("良好"); else if($fenshu>70&&$fenshu<=80) print("中等"); else if($fenshu>60&&$fenshu<=70) print("剛及格"
54、); else if($fenshu<60) print("差");?>【2-37】if語句的鏈接(層進(jìn))(使用if-elseif結(jié)構(gòu))PHP程序2-37送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#if語句的鏈接(層進(jìn))(使用if-elseif結(jié)構(gòu))#閱讀性比2-36好echo "本程序閱讀性比程序2-36好,以下是運(yùn)行結(jié)果<br>"$fenshu=61;echo "你的分?jǐn)?shù)是:$fenshu,屬于:"if($fenshu>90) print("優(yōu)秀&q
55、uot;);elseif($fenshu>80&&$fenshu<=90) print("良好");elseif($fenshu>70&&$fenshu<=80) print("中等");elseif($fenshu>60&&$fenshu<=70) print("剛及格");elseif($fenshu<60) print("差");?>【2-38】用if結(jié)構(gòu)的HTML輸出一般做法PHP程序2-38送到用戶瀏覽器解釋后
56、顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#用if結(jié)構(gòu)的HTML輸出一般做法$fenshu=61;echo "以下結(jié)果用if結(jié)構(gòu)嵌入HTML實(shí)現(xiàn),程序可讀性稍差<br>"?><table border=1> <tr> <td><? if($fenshu>60) echo "及格"else echo "不及格"?></td> </tr></table><br>用三元操作符簡(jiǎn)化使更簡(jiǎn)潔的例子見2-3
57、9【2-39】用三元操作符簡(jiǎn)化使2-38更簡(jiǎn)潔的例子PHP程序2-39送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#用三元操作符簡(jiǎn)化使2-38更簡(jiǎn)潔的例子$fenshu=61;echo "以下結(jié)果用三元操作符簡(jiǎn)化if結(jié)構(gòu)實(shí)現(xiàn),程序可讀性好<br>"?><table border=1> <tr> <? echo "<td>".($fenshu>60?"及格":"不及格")."</td>&qu
58、ot; ?> </tr></table><br>進(jìn)一步的拼接字串的例子見程序2-39a.php【2-39a】用三元操作符簡(jiǎn)化使2-39更簡(jiǎn)潔的例子PHP程序2-39a<?php#比2-39字串拼接更復(fù)雜的例子$fenshu=61;echo "以下結(jié)果用三元操作符結(jié)合復(fù)雜字串拼接實(shí)現(xiàn),程序可讀性一般,但移植性好<br>"echo "<table border=1><tr><td>".($fenshu>60?"及格":"不及格&
59、quot;)."</td></tr></table>"?>PHP解釋結(jié)果(HTML輸出)(右鍵單擊該頁面,在快捷菜單中單擊“查看源文件”命令可看到)送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)5.2 switch語句預(yù)備知識(shí) switch的C語言形式、switch-endswitch結(jié)構(gòu)、switch語句中case的合并【2-40】switch-endswith結(jié)構(gòu)的用法PHP程序2-40送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#switch-endswi
60、th結(jié)構(gòu)的用法$fenshu=61;$f=(int)($fenshu/10);echo "你的分?jǐn)?shù)是:$fenshu,屬于:"switch($f): case 9: print("優(yōu)秀");break; case 8: print("良好");break; case 7: print("中等");break; case 6: print("剛及格");break; default: print("差");break;endswitch; ?>【2-41】case的合并PHP程序2-41送到用戶瀏覽器解釋后顯示的結(jié)果(運(yùn)行結(jié)果,顯示在瀏覽器頁面中的結(jié)果)<?php#case的合并$fenshu=61;$f=(int)($fenshu/10);echo "你的分?jǐn)?shù)是:$fenshu,屬于:"switch($f): case 9: case 8: case 7: case 6: print("及格"); break; defau
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)游戲公司前臺(tái)接待總結(jié)
- 2025年全球及中國(guó)神經(jīng)外科分流器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球草坪護(hù)理CRM軟件行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)導(dǎo)向銷行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)古董搬運(yùn)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球雙膜儲(chǔ)氣罐行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球環(huán)保EPDM顆粒行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球壞死性筋膜炎藥品行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球車輛后備箱釋放電纜行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球光伏舟托行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 第十一章《功和機(jī)械能》達(dá)標(biāo)測(cè)試卷(含答案)2024-2025學(xué)年度人教版物理八年級(jí)下冊(cè)
- 2025年銷售部年度工作計(jì)劃
- 2024年蘇州工業(yè)園區(qū)服務(wù)外包職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫含答案解析
- ESG表現(xiàn)對(duì)企業(yè)財(cái)務(wù)績(jī)效的影響研究
- DB3713T 340-2024 實(shí)景三維數(shù)據(jù)接口及服務(wù)發(fā)布技術(shù)規(guī)范
- 八年級(jí)生物開學(xué)摸底考(長(zhǎng)沙專用)(考試版)
- 車間空調(diào)崗位送風(fēng)方案
- 使用錯(cuò)誤評(píng)估報(bào)告(可用性工程)模版
- 初一年級(jí)班主任上學(xué)期工作總結(jié)
- 2023-2024年同等學(xué)力經(jīng)濟(jì)學(xué)綜合真題及參考答案
- 農(nóng)村集體土地使用權(quán)轉(zhuǎn)讓協(xié)議
評(píng)論
0/150
提交評(píng)論