版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、php 程序設(shè)計 實驗指導(dǎo)書 主編教師:史朝陽 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 1 目錄目錄 實驗一實驗一 架設(shè)架設(shè) windows 下的下的 php 開發(fā)測試服務(wù)器開發(fā)測試服務(wù)器 .4 0. 實驗準備實驗準備.4 0.1 系統(tǒng)環(huán)境和 php 相關(guān)軟件、開發(fā)工具.4 0.2 實驗?zāi)康?4 0.3 實驗中的路徑說明.4 1. php 的安裝和配置的安裝和配置.4 1.1 安裝.4 1.2 配置.5 2. apache 的安裝和配置的安裝和配置.5 2.1 安裝軟件.5 2.2 配置服務(wù).5 3. apache : web 服務(wù)的安裝和啟動服務(wù)的安裝和啟動.6 4. 測試測試 apach
2、e 服務(wù)器對服務(wù)器對 php 的支持能力的支持能力.6 5. mysql 的安裝和啟動數(shù)據(jù)庫服務(wù)器的安裝和啟動數(shù)據(jù)庫服務(wù)器 .6 6. 測試測試 php 與與 mysql 的協(xié)同的協(xié)同 .7 實驗二實驗二 php 基本語法實驗基本語法實驗.8 0 實驗準備實驗準備.8 0.1 實驗環(huán)境和相關(guān)工具軟件.8 0.2 實驗?zāi)康暮蛢?nèi)容.8 0.3 實驗中的約定.9 1 詞法結(jié)構(gòu)詞法結(jié)構(gòu).9 1.1 大小寫敏感.9 1.2 語句和分號.10 1.3 注釋.10 1.4 標識符(常量標識符).11 2 數(shù)據(jù)類型數(shù)據(jù)類型.11 2.1 字符串.11 2.2 布爾型.12 2.3 數(shù)組型.12 2.4 對象型
3、.13 2.5 資源型.13 2.6 數(shù)據(jù)類型的檢測.15 3 變量變量.15 2 3.1 變量的變量.15 3.2 變量的作用域.17 3.3 垃圾收集.18 4. 表達式和操作符表達式和操作符.20 4.1 隱式類型轉(zhuǎn)換.20 4.2 字符串連接操作符.21 4.3 自增自減操作符.22 4.4 類型轉(zhuǎn)換操作符.22 4.5 其他操作符.23 5.流控制語句流控制語句.23 5.1 if語句.23 5.2 switch語句.26 5.3 while語句.27 5.4 for語句.28 5.5 foreach語句.28 5.6 exit語句.28 5.7 return語句.28 6.包含代碼
4、包含代碼.28 7.在頁面中嵌入在頁面中嵌入 php.30 實驗三實驗三 html 基礎(chǔ)實驗基礎(chǔ)實驗.31 0 實驗準備實驗準備.31 0.1 實驗環(huán)境和相關(guān)工具軟件.31 0.2 實驗?zāi)康?31 0.3 實驗內(nèi)容.31 0.4 實驗中的說明.32 1. html 基本架構(gòu)基本架構(gòu).32 2. 最簡單的表單和表單對象的使用最簡單的表單和表單對象的使用.32 實驗四實驗四 mysql 基礎(chǔ)實驗基礎(chǔ)實驗 .33 0. 實驗準備實驗準備.33 0.1 實驗環(huán)境和相關(guān)工具軟件.33 0.2 實驗?zāi)康?33 0.3 實驗內(nèi)容.33 實驗五:系統(tǒng)建模與前臺(新聞列表實驗五:系統(tǒng)建模與前臺(新聞列表/新聞查
5、看)設(shè)計新聞查看)設(shè)計.34 0. 實驗準備實驗準備.34 0.1 實驗環(huán)境和相關(guān)工具軟件.34 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 3 0.2 實驗?zāi)康暮蛢?nèi)容.34 1. 實驗具體環(huán)節(jié)實驗具體環(huán)節(jié).34 1.1 系統(tǒng)建模.34 1.2 系統(tǒng)實現(xiàn).35 實驗六:后臺管理(新聞管理實驗六:后臺管理(新聞管理/人員管理)程序設(shè)計人員管理)程序設(shè)計.37 0. 實驗準備實驗準備.37 0.1 實驗環(huán)境和相關(guān)工具軟件.37 0.2 實驗?zāi)康暮蛢?nèi)容.37 1. 實驗具體環(huán)節(jié)實驗具體環(huán)節(jié).37 1.1 新聞錄入程序設(shè)計:.37 1.2 新聞修改程序設(shè)計:.38 1.3 人員信息添加程序設(shè)計:.38
6、實驗七:后臺管理(身份認證與后臺系統(tǒng)集成)程序設(shè)計實驗七:后臺管理(身份認證與后臺系統(tǒng)集成)程序設(shè)計.39 0. 實驗準備實驗準備.39 0.1 實驗環(huán)境和相關(guān)工具軟件.39 0.2 實驗?zāi)康暮蛢?nèi)容.39 1. 實驗具體環(huán)節(jié)實驗具體環(huán)節(jié).40 1.1 認證界面denglu.php:.40 1.2 認證程序jiancha.php 在數(shù)據(jù)庫中檢查具有該帳號和密碼的用戶是否存在,存在則取出該用戶資料 (如renyuanid)存到session變量中去,然后轉(zhuǎn)向houtaiguanli.php。.40 1.3 身份把關(guān)程序.40 1.4 后臺管理集成界面(總界面)houtaiguanli.php 集成
7、后臺管理所有功能,是通向各管理功能程序的 領(lǐng)航處、出發(fā)點。 實現(xiàn)很簡單,使用 html 的超鏈接技術(shù)即可實現(xiàn)。.41 1.5 新聞系統(tǒng)后臺程序關(guān)系流程圖.41 4 實驗一 架設(shè) linux 下的 php 開發(fā)測試服務(wù)器 0. 實驗準備 0.1 系統(tǒng)環(huán)境和 php 相關(guān)軟件、開發(fā)工具 操作系統(tǒng):linux(red hat) 具體到的機房環(huán)境,請在 linux 環(huán)境下做 web 服務(wù)器:apache 2.0.63 (壓縮包文件:apache_2.0.63-win32.exe) php:php5.2.11 (壓縮包文件:php-5.2.11-win32.zip) 數(shù)據(jù)庫:mysql 5.1.39 (
8、壓縮包文件:mysql-essential-5.1.39-win32.zip) 腳本編輯器: editplus(已安裝好):圖形化編輯環(huán)境,速度慢,功能多,常用于復(fù)雜網(wǎng)頁設(shè)計 注: php 相關(guān)軟件、開發(fā)工具的獲得:相關(guān)軟件、開發(fā)工具的獲得:在我的 上下載 0.2 實驗?zāi)康?能夠快速部署 linux 下的開發(fā)測試服務(wù)器環(huán)境,以滿足同學(xué)們在宿舍、家中自己機器上學(xué)習(xí)、研究和開發(fā) php 程序設(shè)計的需要或是實際工作的需要。 0.3 實驗中的路徑說明 為說明問題的簡單起見,路徑為比較簡單的示例路徑,但已經(jīng)過測試。實際運用時,路徑完全可根據(jù)自 己需要設(shè)定。 1. p
9、hp 的安裝和配置 1.1 安裝 下載 php-5.2.5-win32.zip 軟件包,不需要安裝,在 c 盤根目錄下建立文件夾 c:php 。將軟 件包解壓縮到本目錄下。 在 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.d
10、ll ” 去掉前面的“;”(4) 找到 “ ;extension=php_mysqli.dll ” 去 掉前面的“;” 修改完 php.ini 文件后,保存該文件,并復(fù)制到 c:windows 目錄下。 將 c:phplibmysql.dll 復(fù)制到 c:windowssystem32 目錄下 注:操作系統(tǒng)安裝目錄,具體位置見表1 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 5 表 1:操作系統(tǒng)安裝目錄 操作系統(tǒng)操作系統(tǒng)安裝目錄 1.2 配置 通過修改 php.ini 中的參數(shù)來實現(xiàn)。對 mysql 而言,若無特殊要求,一般無須配置。因為 php 在 php.ini 中已經(jīng)做好了對 mysql
11、的配置,所以一般無須修改。 2. apache 的安裝和配置 2.1 安裝軟件 雙擊 apache_2.0.63-win32.exe,按照提示,選擇 custom 安裝方式,然后一路默認,即完成安裝。 注意:如果您的電腦安裝了 iis,請先到控制面板關(guān)閉 iis 服務(wù),因為 iis 服務(wù)器與 apache 服務(wù)器都使用 一個端口。 2.2 配置服務(wù) 單擊開始-程序- apache http server 2.2- configure apache server- edit the apache httpd.conf configuration file,打開 apache 的配置文件 http
12、d.conf,按表 2 提示進行配置: 注意:每處的配置要想起作用,必須將行首的#號(注釋符號)去掉;表示一個或多個空格 表 2 apache 配置 序號參數(shù)名和示例參數(shù)值配置方法說明 bindaddress(你所用機器的 ip 地址) 修改地址綁定(指定服務(wù)器地址) loadmodulephp5_modulec:/php/sapi/php5apache.dll 添加將 php 配置為 apache 的模塊(apache module)方式 port80 修改指定端口 serveradmin(你的郵箱地址,如 ) 修改指明管理員信箱 servernamessl 修改指明主機名稱 documen
13、trootd:websitehtdocs 修改web 文檔發(fā)布主目錄 修改該處目錄應(yīng)與 web 文檔發(fā)布主目錄一致 scriptalias/php/c:/php/ addtypeapplication/x-httpd-php.php actionapplication/x-httpd-php/php/php.exe 添加指明腳本路徑 指明 php 腳本擴展名 指明 php 腳本解釋器程序名 directoryindexindex.htmindex.php 修改指定默認文檔 *描述以 httpd.conf 文件的行文順序進行 *表中路徑、地址、主機名、信箱等,實際配置時請根據(jù)自己情況進行 按表
14、1 所述,參考 apache 配置文件樣本,修改完畢后,保存。 6 測試配置是否成功。 1)在編輯完成后,我們還可以通過 “開始/程序/apache http server 2.2/configure apache server/test configuration來測試配置文件是否有語法錯誤等。 2)或者打開瀏覽器敲入:http:/localhost 能否見到服務(wù)器到測試頁面。能見到則配置成功。 3. apache : web 服務(wù)的安裝和啟動 (1)啟動 apache 服務(wù): 單擊:開始-程序- apache http server 2.2- control apache service-
15、 start。 (默認情況下,每次操作系統(tǒng)啟動時自動啟動該服務(wù),可更改) 4. 測試 apache 服務(wù)器對 php 的支持能力 測試目的:檢驗配置后的 apache 服務(wù)器是否提供了對 php 腳本的解釋能力(支持 php) 用 editplus 編寫測試腳本,存為 d:websitehtdocsceshi.php,內(nèi)容為: 說明:phpinfo()是 php 內(nèi)置函數(shù),用來顯示 php 和 apache 配置信息,在瀏覽器中敲入 http:/localhost/ceshi.php,回車后若顯示類似圖 1 的 php 配置頁面(以 winxp 下為例) ,則說明你的 apache 服務(wù)器已經(jīng)
16、支持 php 腳本,能夠解釋 php 腳本了;若不顯示類似畫面,則配置有誤,此時你的 apache 不能夠解釋 php 腳本,需重新配置。 圖 1 5. mysql 的安裝和啟動數(shù)據(jù)庫服務(wù)器 將 mysql-essential-5.1.39-win32.zip 解壓縮后,雙擊 setup.exe,按照提示,選擇 custom 安裝方 式,然后一路默認,遇到輸入密碼的地方,輸入 123 作為密碼。 測試安裝是否成功。單擊“開始” ,選擇“mysqlmysql server5.1mysql command line client” ,會出現(xiàn)如下圖所示的窗口,然后輸入 root 密碼,根據(jù)提示操作即
17、可 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 7 6. 測試 php 與 mysql 的協(xié)同 php 方面:準備測試腳本方面:準備測試腳本 connect.php,存放在,存放在 d:websitehtdocs 下,其內(nèi)容為:下,其內(nèi)容為: 程序 2-13: ? $connection=mysql_connect(,root,123) or die(不能連接到 mysql 數(shù)據(jù)庫:.mysql_error(); echo 已經(jīng)成功連接 mysql 數(shù)據(jù)庫; mysql_select_db(test)or die(不能選擇數(shù)據(jù)庫); echo 連接test數(shù)據(jù)庫已經(jīng)成功; ?
18、(1)測試步驟 在瀏覽器地址欄輸入:http:/localhost/connect.php,回車,顯示如圖 2 所示,則表明 php 與 mysql 能 夠協(xié)同工作了。 圖 2 8 實驗二 php 基本語法實驗 0 實驗準備 0.1 實驗環(huán)境和相關(guān)工具軟件 具體到的機房環(huán)境,請在 windowsxp 環(huán)境下做本實驗: 操作系統(tǒng):windowsxp web 服務(wù)器:apache 2.0.63 默認發(fā)布文檔路徑:c:apachehtdocs php:php5.2.11 安裝路徑:c:php 數(shù)據(jù)庫:mysql 5.1.39 使用默認路徑 腳本編輯器: 記事本 或 editplus-v3.11.46
19、3h 或 macromedia dreamweaver mx 中文版 注意:注意:使用以上腳本編輯器,若要保存為.php 文件,必須在保存時指明擴展名為.php 尤其是記事本,必須在保存時,單擊“保存類型”下拉框,選擇“所有文件(*.*)”類型,然后指定 文件擴展名是.php,單擊“保存”按鈕后,保存的文件才能保證是.php 文件。常見錯誤是直接保存,導(dǎo)致 保存的文件其實是文本文件,如 abc.php.txt 等以.txt 為擴展名的文本文件。 0.2 實驗?zāi)康暮蛢?nèi)容 實驗?zāi)康模菏炀氄莆?php 語言的基礎(chǔ)語法 實驗內(nèi)容:從 7 個方面完成 php 基本語法實際體驗,分列如下: 一、詞法結(jié)構(gòu)
20、大小寫 語句和分號 注釋 標識符 二、數(shù)據(jù)類型 字符串型 布爾型 數(shù)組型 對象型 資源型 各種數(shù)據(jù)類型的檢測 三、變量 變量的變量 變量的作用域 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 9 垃圾收集:變量的內(nèi)存管理 四、表達式和操作符 隱式類型轉(zhuǎn)換 字符串連接操作符 自增和自減操作符 類型轉(zhuǎn)換操作符 其他操作符 五、流控制語句 if 語句 switch 語句 while 語句 for 語句 foreach 語句 exit 語句 return 語句(2-12) 六、包含代碼 七、在 web 頁面中嵌入 php 0.3 實驗中的約定 所有實驗程序均與講義中的例子相對應(yīng),如程序 1-1.php,對
21、應(yīng)講義中的例子例 1-1。 1 詞法結(jié)構(gòu) 1.1 大小寫敏感 預(yù)備知識預(yù)備知識 變量區(qū)分大小寫,內(nèi)置結(jié)構(gòu)(while,for,if 等)及關(guān)鍵字(echo,class 等)不區(qū)分大小寫 【2-1】大小寫敏感的例子 php 程序 2-1送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在瀏覽器頁面中 的結(jié)果) 注意:要使運行結(jié)果達到真正分行(和注意:要使運行結(jié)果達到真正分行(和 html 輸出一致)輸出一致) ,請將程序,請將程序 2-1 中的中的n 換成換成,即可實現(xiàn),即可實現(xiàn), 如下例如下例 【2-1br】修改程序 2-1 后的程序 2-1br,直接實現(xiàn)分行(將程序 2-1 中的n 換成) 10
22、 php 程序 2-1br送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在 瀏覽器頁面中的結(jié)果) ? $name=hello1,world1; $name=hello2,world2; $name=hello3,world3; echo $name=$name; echo $name=$name: echo $name=$name; ? 原因:瀏覽器不解釋(或者說不識別,或忽略)經(jīng)原因:瀏覽器不解釋(或者說不識別,或忽略)經(jīng) php 解釋解釋n 而成的空白換行,只有遇到而成的空白換行,只有遇到這個這個 html 中的換行標記,才解釋成換行。為了直接達到預(yù)期換行效果,將不再使用中的換行標記,才解
23、釋成換行。為了直接達到預(yù)期換行效果,將不再使用n,而是使用,而是使用 1.2 語句和分號 預(yù)備知識預(yù)備知識 簡單語句 復(fù)雜語句 分號的省略 【2-2】語句和分號 php 程序 2-2送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) ? if($a=$b) echo 注意:; /簡單語句 echo $a 的值等于$b 的值; /上面部分為復(fù)雜語句 echo hello,world; /此處分號可省略 ? 1.3 注釋 預(yù)備知識預(yù)備知識 在必要的地方做注釋 注釋的形式及各自的適用處:shell 形式(#)、c+形式(/)、c 形式(/* */) 【2-6】c 形式的注釋作用
24、php 程序 2-6送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) some stuff you want to be html. now this is regular html 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 11 1.4 標識符(常量標識符) 預(yù)備知識預(yù)備知識 使用 define()設(shè)置常量標識符 【2-7】使用 define()設(shè)置常量標識符 php 程序 2-7送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽 顯示在瀏覽器頁面中的結(jié)果) 2 數(shù)據(jù)類型 2.1 字符串 預(yù)備知識預(yù)備知識 字符串的表示 單引號和雙引號在字符轉(zhuǎn)義上的不同作用:單引號僅
25、轉(zhuǎn)義反斜杠和單引號 【2-8】單引號和雙引號在字符轉(zhuǎn)義上的不同作用 php 程序 2-8送到用戶瀏覽器解釋后顯示的結(jié)果(運行 結(jié)果,顯示在瀏覽器頁面中的結(jié)果) ? $name=”sun shoulong”; /雙引號中的變量值將被輸出 echo “hi,$name”; echo hi,$name;/單引號中的變量名將被輸出, 因為單引號不認為$name 是變量 ? 注意:雙引號中的變量,若前面不加反斜杠注意:雙引號中的變量,若前面不加反斜杠進行轉(zhuǎn)義(將進行轉(zhuǎn)義(將$原樣輸出)原樣輸出) ,則在輸出字串的時候?qū)⑤敵鲎兞?,則在輸出字串的時候?qū)⑤敵鲎兞?中的值中的值 【2-9】單引號僅支持的字符轉(zhuǎn)義
26、:反斜杠和單引號 php 程序 2-9送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) 12 2.2 布爾型 預(yù)備知識預(yù)備知識 php 中為 false 值的情況 【2-10】判斷布爾值 php 程序 2-10送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) ? $x=5; $y=”; if($x) echo $x 有一個 true 值; if(!$x) echo $x 有一個 false 值; if($y) echo $y 有一個 true 值; if(!$y) echo $y 有一個 false 值; ? 2.3 數(shù)組型 預(yù)備知識:預(yù)備知識:數(shù)組
27、的創(chuàng)建、遍歷;鍵名:數(shù)組元素的下標名稱,一般是從 0 開始的整數(shù),也可以是字符串; 鍵值:數(shù)組元素中存儲的值 【2-11】數(shù)組的創(chuàng)建、遍歷:發(fā)明家記錄 php 程序 2-11送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) edison, rotary engine=wankel, toilet=crapper); */ #遍歷數(shù)組$person,顯示其內(nèi)容 foreach($person as $name)/訪問每個鍵 echo “hello,$name”; #遍歷數(shù)組$creator,顯示其內(nèi)容 foreach($creator as $invention=$inve
28、ntor) echo “$invention was created by $inventor”; ? 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 13 2.4 對象型 預(yù)備知識預(yù)備知識 類:oop 的單元,是包含屬性(變量)和方法(函數(shù))的結(jié)構(gòu)定義 類的定義 對象的創(chuàng)建、引用其屬性和方法 【2-12】類和對象的簡單例子 php 程序 2-12送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯 示在瀏覽器頁面中的結(jié)果) name=$newname; return $this-name; $ed=new person; $ed-name(edison); printf(“hello,%s”,$ed-na
29、me); $tc=new person; $tc-name(crapper); printf(“l(fā)ook out below,%s”,$tc-name); ? 2.5 資源型 預(yù)備知識:預(yù)備知識:資源的概念:以數(shù)據(jù)庫應(yīng)用為例,在同時有眾多的數(shù)據(jù)庫連接存在時,要進行查詢和關(guān)閉連 接等操作,必須指明這些操作是對哪個連接的,所以有必要給每個連接賦予一個標識值,一般是整數(shù)。 這種標識值的數(shù)據(jù)類型稱為資源型。 資源的回收:程序結(jié)束時資源自動關(guān)閉,資源值被回收;作為局部變量的資源,當函數(shù)調(diào)用結(jié)束時,該 變量的值自動被 php 收回;顯示地關(guān)閉資源 【2-13】類和對象的簡單例子 ? /連接數(shù)據(jù)庫 $hos
30、tname=; $username=; $password=; echo 開始建立與服務(wù)器的連接; /$server_link 為資源型變量 $server_link=mysql_connect($hostname,$username,$password) or die (連接服務(wù)器失敗!程序中斷執(zhí)行!); if($server_link) echo 與服務(wù)器的連接成功!; echo 開始打開數(shù)據(jù)庫 test; /$db_link 為資源型變量 $db_link=mysql_select_db(test,$server_link) or die (連接數(shù)據(jù)庫失敗!程序中斷執(zhí)行!); 14 /d
31、ie 是 exit 的別名,它們的作用是強制中斷程序執(zhí)行 /若程序在這里終止執(zhí)行,則上面的資源型變量所占內(nèi)存資源將自動回收(釋放資源型變量) echo 打開數(shù)據(jù)庫 test 成功!; echo 開始從數(shù)據(jù)庫 test 的表 abc 中取出數(shù)據(jù); /將查詢結(jié)果存入數(shù)組(遍歷記錄集,將記錄集中的數(shù)據(jù)轉(zhuǎn)到數(shù)組) $sql=select * from abc; /$result 為資源型變量 $result=mysql_query($sql,$server_link); $i=0; while($temp_array =mysql_fetch_array($result) $abc_array$i0=
32、$temp_array a; $abc_array $i1=$temp_array b; $abc_array $i2=$temp_array c; $i+; echo 取出數(shù)據(jù)完畢!; mysql_free_result($result);/釋放記錄集,這是顯式地關(guān)閉資源,若程序終止執(zhí)行,該關(guān)閉將自動進行 echo 開始關(guān)閉與服務(wù)器的連接; /斷開數(shù)據(jù)庫連接,這也是顯式地使用關(guān)閉函數(shù)回收資源變量 $db_close=mysql_close($server_link);/ $db_close 為布爾型變量 if($db_close) echo 關(guān)閉與服務(wù)器的連接成功!; else exit(關(guān)
33、閉與服務(wù)器的連接失敗!程序中斷執(zhí)行!); echo 開始顯示數(shù)據(jù); /將數(shù)組中的數(shù)據(jù)輸出到瀏覽器(各列以雙等號間隔) echo a 列數(shù)據(jù)=b 列數(shù)據(jù)=c 列數(shù)據(jù); for($i=0;$icount($abc_array);$i+) echo $abc_array$i0.=. $abc_array$i1.=. $abc_array$i2.; echo 顯示數(shù)據(jù)結(jié)束,程序執(zhí)行完畢。; ? php 解釋結(jié)果(html 輸出) (右鍵單擊該頁面,在快捷菜單中單擊“查看源文件”命令可看到) 送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書
34、15 2.6 數(shù)據(jù)類型的檢測 預(yù)備知識預(yù)備知識 數(shù)據(jù)類型檢測函數(shù) 【2-14】數(shù)據(jù)類型檢測 php 程序 2-14送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在瀏 覽器頁面中的結(jié)果) 3 變量 3.1 變量的變量 預(yù)備知識預(yù)備知識 變量的概念和作用;變量的聲明和使用;變量的變量 【2-15】php 變量無類型檢查,無須聲明,類型隨用隨變 16 php 程序 2-15送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯 示在瀏覽器頁面中的結(jié)果) ? #php 變量無類型檢查 $what=fred; echo $what 的值=$what; if(is_string($what) echo $what
35、是字符串型變 量; $what=35; echo $what 的值=$what; if(is_int($what) echo $what 是整型變量 ; $what=array(fred,35,wilma); echo $what 的值為:; foreach($what as $e) echo $e; if(is_array($what) echo $what 是數(shù)組型變量 ; ? 【2-16】空變量的例子 php 程序 2-16送到用戶瀏覽器解釋后顯示的結(jié)果(運行 結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 【2-17】變量的變量 php 程序 2-17送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示
36、在瀏覽器頁面中的結(jié)果) ? #變量的變量 $r=i; $r=1; echo 因為$r=$r; echo 所以$r=$r; echo 又因為$r=.$r.; echo 故$r=.$r; echo :-)你明白了嗎?; ? 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 17 3.2 變量的作用域 預(yù)備知識預(yù)備知識 變量按其作用域分為:局部變量、全局變量。靜態(tài)變量、函數(shù)的參數(shù)屬于局部變量;從局部訪問全局變 量的方法;從全局訪問局部變量的方法 【2-19】不能從全局(函數(shù)外部)直接訪問局部變量 php 程序 2-19送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) 【2-20】從局部
37、訪問全局變量,方法 1:使用 global 關(guān)鍵字聲明 php 程序 2-20送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) 【2-21】從局部訪問全局變量,方法 2:引用全局變量數(shù)組$globals php 程序 2-21送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) 18 【2-22】使用靜態(tài)變量的好處::使全局可間接訪問到 php 程序 2-22送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示 在瀏覽器頁面中的結(jié)果) ? #使用靜態(tài)變量的方法,強制保留局部變量上 #次調(diào)用結(jié)束時的值,使全局可間接訪問到 function update_coun
38、ter() static $counter=0;/這個$counter 是局部的變 量,聲明為靜態(tài),并賦初始值 0 $counter+; echo 局部靜態(tài)變量$counter 這時的值 =$counter; $counter=10;/這個$counter 是全局的變量 update_counter(); update_counter(); echo 全局變量$counter 這時的值=$counter; ? 【2-23】全局不可直接訪問局部變量(可通過將局部變量聲明為靜態(tài)的方法,參見 2-22) php 程序 2-23送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示 在瀏覽器頁面中的結(jié)果) ?
39、 #函數(shù)參數(shù)作為一種局部變量,是不能直接被 外部訪問的 function greet($name) echo hello,$name; greet(孫壽龍); if($name=null) echo $name 是一個空變量,訪問不到!; ? 3.3 垃圾收集 預(yù)備知識預(yù)備知識 無用變量的收回;php 內(nèi)存管理;引用計算;寫時復(fù)制 【2-24】php 的寫時復(fù)制 php 程序 2-24 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 19 ? #php 通過使用引用計算和寫時復(fù)制進行內(nèi)存管理從而節(jié)省了時間和內(nèi)存 #一、寫時復(fù)制 /對共享同一首地址的多個變量,修改其中一個,如$worker,則此時為$
40、worker 分配新內(nèi)存空間, /將其新元素內(nèi)容寫入該空間,將其舊元素內(nèi)容復(fù)制到該空間 /這就是寫時復(fù)制 /發(fā)生寫時復(fù)制,為$worker 開辟新空間,將$worker 最新內(nèi)容復(fù)制到這里,以不影響$other 的內(nèi)容 $worker1=36; /同時發(fā)生引用計算:原$worker 與$other 共享的那個首地址引用的變量名減少 1 個, 只剩下了$other(引用計數(shù)減少 1) echo 修改數(shù)組$worker 的第二個元素,發(fā)生寫時復(fù)制及引用計算后,; echo 新數(shù)組$other 的內(nèi)容:; foreach($other as $a) echo $a; echo 新數(shù)組$worker
41、的內(nèi)容:; foreach($worker as $b) echo $b; echo 是不是很好玩?; ? php 解釋結(jié)果(html 輸出) (右鍵單擊該頁面,在快捷菜單中單擊“查看源文件”命令可看到) 送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 20 【2-25】垃圾收集:變量的回收使用 unset()回收變量(釋放變量) php 程序 2-25送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) ? #垃圾收集:變量的回收使用 unset()釋放變量 echo 從未對$name 賦過值,這時:; $s1=isset($name);/$s1 為
42、false if($s1) echo $name 已存在,其值=$name; else echo $name 不存在,其值=$name; $name=fred; $s1=isset($name);/$s1 為 true if($s1) echo $name 已存在,其值=$name; else echo $name 不存在,其值=$name; echo 現(xiàn)在從內(nèi)存中釋放(刪除)$name:; unset($name); $s1=isset($name);/$s1 為 false if($s1) echo $name 已存在,其值=$name; else echo $name 不存在,其值=$n
43、ame; ? 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 21 4. 表達式和操作符 4.1 隱式類型轉(zhuǎn)換 預(yù)備知識預(yù)備知識 數(shù)字間進行字符串拼接的規(guī)則;字符串轉(zhuǎn)換數(shù)字后的數(shù)字值規(guī)則 【2-26】數(shù)字間進行字符串拼接的規(guī)則:數(shù)字首先變?yōu)樽执?,然后再拼?php 程序 2-26送到用戶瀏覽器解釋后顯示的 結(jié)果(運行結(jié)果,顯示在瀏覽 器頁面中的結(jié)果) 【2-27】字符串轉(zhuǎn)換數(shù)字后的數(shù)字值規(guī)則 假定以數(shù)字開始,該數(shù)字即為轉(zhuǎn)換后的數(shù)字值;若未找到數(shù)字則轉(zhuǎn)換后的數(shù)字值為 0;若開頭的數(shù)字包含 一個句點或大寫或小寫的 e,則轉(zhuǎn)換后的數(shù)字值為浮點型 php 程序 2-27送到用戶瀏覽器解釋后顯示的結(jié) 果(運行
44、結(jié)果,顯示在瀏覽器頁 面中的結(jié)果) ? #字符串轉(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;/1101 echo $a=$a; echo $b=$b; echo $c=$c; echo $d=$d; ? 4.2 字符串連接操作符 預(yù)備知識預(yù)備知識 字符串連接操作符;數(shù)字與字串連接時,數(shù)字先轉(zhuǎn)換成字串 【2-28】數(shù)字在與字符串連接時,先自動變成字符串 22 php 程序 2-28送到用戶瀏覽器解釋后顯示的結(jié)果(運行 結(jié)果
45、,顯示在瀏覽器頁面中的結(jié)果) 類似的,如 2-29: 【2-29】和 2-28 差不多的程序 php 程序 2-29送到用戶瀏覽器解釋后顯示的結(jié)果(運 行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 4.3 自增自減操作符 預(yù)備知識預(yù)備知識 數(shù)字的自增自減(按數(shù)字順序) ;字母的自增自減(按字母順序) 【2-30】 php 程序 2-30送到用戶瀏覽器解釋后顯示的結(jié)果(運 行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) ? #字母的自增自減運算 echo 小寫字母自增:; $a=a; while($a=z) echo $a+; echo ; echo 大寫字母自增:; $a=a; while($a=z) echo $
46、a+; echo ; ? 請編程驗證: (該圖顯示的是部分結(jié)果) 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 23 字符串字符串+ ab za spazspba k9l0 4243 4.4 類型轉(zhuǎn)換操作符 預(yù)備知識預(yù)備知識 類型轉(zhuǎn)換操作符;類型轉(zhuǎn)換的臨時性;類型轉(zhuǎn)換的真正實現(xiàn) 【2-31】類型轉(zhuǎn)換的臨時性 php 程序 2-31送到用戶瀏覽器解釋后顯示的結(jié)果(運 行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 【2-32】類型轉(zhuǎn)換的真正實現(xiàn) php 程序 2-32送到用戶瀏覽器解釋后顯示的結(jié)果(運 行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) ? #轉(zhuǎn)換自身類型并保值 $a=5; if(is_string($a) e
47、cho 開始,$a 是字符串型,值為:$a; $a=(int)$a; if(is_int($a) echo 轉(zhuǎn)換類型并自賦值后,$a 是整型,值為:$a; ? 4.5 其他操作符 預(yù)備知識預(yù)備知識 錯誤抑制操作符(例子程序見 2-13) ;三元操作符 【2-33】三元操作符 php 程序 2-33送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) 24 ? #三元操作符使用的例子 $a=1; $b=2; echo $a=$a,$b=$b; echo $a$b?$a$b:$a 5.流控制語句 5.1 if 語句 預(yù)備知識預(yù)備知識 if 結(jié)構(gòu)、if-else 結(jié)構(gòu)、if-els
48、e 鏈接(層進)、if-elseif 結(jié)構(gòu)、if-else-endif 結(jié)構(gòu) 【2-34】使用 if-else-endif 結(jié)構(gòu) php 程序 2-34送到用戶瀏覽器解釋后顯示的結(jié)果(運 行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) ? #if 語句的使用 echo 常見使用方式:c 語言的方式:; $user_validated=true; if($user_validated) echo 歡迎你!; $greed=1; else echo 對不起,禁止訪問!; exit; echo 還可使用 php 提供的另一種方式:if-endif 結(jié)構(gòu); $user_validated=; if($user_v
49、alidated): /注意冒號 echo 歡迎你!; $greed=1; else:/注意冒號 echo 對不起,禁止訪問!; exit; endif; /句尾是分號,不是冒號 ? 【2-35】if 語句的使用:嵌入到 html 中(表單驗證) php 程序 2-35送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 25 歡迎你: 請重新登陸! 【2-36】if 語句的鏈接(層進)(使用 if-else 結(jié)構(gòu)) php 程序 2-36送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示 在瀏覽器頁面中的結(jié)果) 90) print(優(yōu)秀
50、); else if($fenshu80 else if($fenshu 【2-37】if 語句的鏈接(層進)(使用 if-elseif 結(jié)構(gòu)) php 程序 2-37送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) ? #if 語句的鏈接(層進)(使用 if-elseif 結(jié)構(gòu)) #閱讀性比 2-36 好 echo 本程序閱讀性比程序 2-36 好,以下是運行結(jié)果; $fenshu=61; echo 你的分數(shù)是:$fenshu,屬于:; if($fenshu90) print(優(yōu)秀); elseif($fenshu80 elseif($fenshu 【2-38】用 if
51、 結(jié)構(gòu)的 html 輸出一般做法 php 程序 2-38送到用戶瀏覽器解釋后顯示的結(jié)果 (運行結(jié)果,顯示在瀏覽器頁面中的 結(jié)果) ? #用 if 結(jié)構(gòu)的 html 輸出一般做法 $fenshu=61; echo 以下結(jié)果用 if 結(jié)構(gòu)嵌入 html 實現(xiàn),程序可讀性稍差; ? 60) echo 及格;else echo 不及格;? 用三元操作符簡化使更簡潔的例子見 2-39 【2-39】用三元操作符簡化使 2-38 更簡潔的例子 php 程序 2-39送到用戶瀏覽器解釋后顯示的結(jié)果 (運行結(jié)果,顯示在瀏覽器頁面中的 結(jié)果) ? #用三元操作符簡化使 2-38 更簡潔的例子 $fenshu=61
52、; echo 以下結(jié)果用三元操作符簡化 if 結(jié)構(gòu)實現(xiàn),程序可讀性好; ? ? echo .($fenshu60?及格:不及格).; ? 進一步的拼接字串的例子見程序 2-39a.php 【2-39a】用三元操作符簡化使 2-39 更簡潔的例子 php 程序 2-39a ? #比 2-39 字串拼接更復(fù)雜的例子 $fenshu=61; echo 以下結(jié)果用三元操作符結(jié)合復(fù)雜字串拼接實現(xiàn),程序可讀性一般,但移植性好; echo .($fenshu60?及格:不及格).; ? php 解釋結(jié)果(html 輸出) (右鍵單擊該頁面,在快捷菜單中單擊“查看源文件”命令可看到) 鄭大軟件學(xué)院 php 程
53、序設(shè)計實驗指導(dǎo)書 27 送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果,顯示在瀏覽器頁面中的結(jié)果) 5.2 switch 語句 預(yù)備知識預(yù)備知識 switch 的 c 語言形式、switch-endswitch 結(jié)構(gòu)、switch 語句中 case 的合并 【2-40】switch-endswith 結(jié)構(gòu)的用法 php 程序 2-40送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) 【2-41】case 的合并 php 程序 2-41送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) 28 5.3 while 語句 預(yù)備知識預(yù)備知識 while 的 c 語言
54、形式(傳統(tǒng) while()等結(jié)構(gòu))、while-endwhile 結(jié)構(gòu) 【2-42】 php 程序 2-42送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) ? #while 循環(huán) #從 1 加到 10 /使用傳統(tǒng) while結(jié)構(gòu) $total=0; $i=1; while($i 【2-43】while-endwhile 循環(huán) php 程序 2-43送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié)果, 顯示在瀏覽器頁面中的結(jié)果) ? #while-endwhile 循環(huán) #從 1 加到 10;使用傳統(tǒng) while-endwhile 結(jié)構(gòu) $total=0; $i=1; while(
55、$i 鄭大軟件學(xué)院 php 程序設(shè)計實驗指導(dǎo)書 29 5.4 for 語句 預(yù)備知識預(yù)備知識 fo 循環(huán)的 c 語言形式(傳統(tǒng) for()等結(jié)構(gòu))、for-endfor 結(jié)構(gòu) 【2-44】for 循環(huán)中多表達式應(yīng)用 php 程序 2-44送到用戶瀏覽器解釋后顯示的結(jié)果(運行結(jié) 果,顯示在瀏覽器頁面中的結(jié)果) ? #用 for 循環(huán)計算 2 的 0 次到 9 次冪的和 $total=0; $total0=0; for($i=1,$j=1;$i=10;$i+,$j*=2) echo 第.$i.步: $total=.$total.+.$j; $total+=$j; echo =$total; ech
56、o 使用 for 結(jié)構(gòu),計算結(jié)果是: $total=1+2+4+8+.+512=$total; ? 【2-45】for 循環(huán)的死循環(huán)的一個例子(因死機,效果圖略) php 程序 2-45 ? for(;)/for 循環(huán)的死循環(huán)的一個例子 echo 永不停歇,耗盡你的計算機的資源!; ? 5.5 foreach 語句 預(yù)備知識預(yù)備知識 foreach()語句;foreach-endforeach 語句;循環(huán)體中對數(shù)組元素的遍歷:訪問每個鍵,訪問每個鍵和鍵值 實驗程序見:程序 2-11 5.6 exit 語句 預(yù)備知識預(yù)備知識 exit 語句的作用;使用形式 實驗程序見:程序 2-13 5.7 r
57、eturn 語句 預(yù)備知識預(yù)備知識 return 語句的作用;使用形式 實驗程序見:程序 2-12 6.包含代碼 預(yù)備知識預(yù)備知識 30 require 和 include 的作用和區(qū)別;使用形式 【2-48】使用包含文件 php 程序 2-48 ? #使用包含文件 #新建一個文件 2-48-conn.php,將 2-13 的 2 到 20 行復(fù)制粘貼到 2-48-conn.php 中,保存作為包含文件, #2-48-conn.php 專門負責(zé)連接服務(wù)器,打開 test 數(shù)據(jù)庫 #新建一個文件 2-48-db_close.php,將 2-13 的 38 到 42 行復(fù)制粘貼到 2-48-db_
58、close.php 中,保存作為包含 文件, #2-48-db_close.php 專門負責(zé)關(guān)閉與服務(wù)器的連接 #本程序采用引用上述兩個包含文件的形式,是對程序 2-13 的簡化,運行效果與 2-13 完全一樣 /連接服務(wù)器,打開數(shù)據(jù)庫 test include(2-48-conn.php); echo 開始從數(shù)據(jù)庫 test 的表 abc 中取出數(shù)據(jù); /將查詢結(jié)果存入數(shù)組(遍歷記錄集,將記錄集中的數(shù)據(jù)轉(zhuǎn)到數(shù)組) $sql=select * from abc; /$result 為資源型變量 $result=mysql_query($sql,$server_link); $i=0; whil
59、e($temp_array =mysql_fetch_array($result) $abc_array$i0=$temp_array a; $abc_array $i1=$temp_array b; $abc_array $i2=$temp_array c; $i+; echo 取出數(shù)據(jù)完畢!; mysql_free_result($result);/釋放記錄集,這是顯式地關(guān)閉資源,若程序終止執(zhí)行,該關(guān)閉將自動進行 /關(guān)閉與服務(wù)器的連接 include(2-48-close.php); echo 開始顯示數(shù)據(jù); /將數(shù)組中的數(shù)據(jù)輸出到瀏覽器(各列以雙等號間隔) echo a 列數(shù)據(jù)=b 列數(shù)
60、據(jù)=c 列數(shù)據(jù); for($i=0;$icount($abc_array);$i+) echo $abc_array$i0.=. $abc_array$i1.=. $abc_array$i2.; echo 顯示數(shù)據(jù)結(jié)束,程序執(zhí)行完畢。; ? 2-48-conn.php: ? /連接數(shù)據(jù)庫 $hostname=; $username=root; $password=ilongilong; echo 開始建立與服務(wù)器的連接; /$server_link 為資源型變量 $server_link=mysql_connect($hostname,$username,$password) or die(連
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 認知障礙的評估與治療
- 深度學(xué)習(xí)及自動駕駛應(yīng)用 課件 第8、9章 基于Transformer的自動駕駛目標檢測理論與實踐、生成對抗網(wǎng)絡(luò)及自動駕駛應(yīng)用
- 手機行業(yè)企業(yè)發(fā)展規(guī)劃
- 總經(jīng)理聘用合同簽訂與報告
- 建筑維修行業(yè)事故處理
- 學(xué)校圖書館智能化合同
- 山西省醫(yī)療設(shè)施建設(shè)合同范本
- 地下商場樁基施工合同樣本
- 地鐵站供暖設(shè)備安裝合同
- 貿(mào)易中心裝修工程施工合同
- 中國醫(yī)科大學(xué)2024年12月(含解析)《形勢與政策》作業(yè)考核試題
- 中國物聯(lián)網(wǎng)安全行業(yè)市場現(xiàn)狀、前景分析研究報告(智研咨詢發(fā)布)
- 湘潭、成都工廠VDA63-2023審核員培訓(xùn)考核附有答案
- 濟南2024年山東濟南市文化和旅游局所屬事業(yè)單位招聘人選筆試歷年典型考題及考點附答案解析
- 助產(chǎn)專業(yè)職業(yè)生涯規(guī)劃
- 整理收納師課件
- (完整word版)英語四級單詞大全
- 《煙酒有危害》公開課教案
- 石膏固定PPT課件
- 【報告】管道脫脂檢測報告
- 躁動患者的護理
評論
0/150
提交評論