《PHP Web應(yīng)用開發(fā)案例教程》630-9(阮云蘭)教案 第11課 數(shù)組常用操作_第1頁
《PHP Web應(yīng)用開發(fā)案例教程》630-9(阮云蘭)教案 第11課 數(shù)組常用操作_第2頁
《PHP Web應(yīng)用開發(fā)案例教程》630-9(阮云蘭)教案 第11課 數(shù)組常用操作_第3頁
《PHP Web應(yīng)用開發(fā)案例教程》630-9(阮云蘭)教案 第11課 數(shù)組常用操作_第4頁
《PHP Web應(yīng)用開發(fā)案例教程》630-9(阮云蘭)教案 第11課 數(shù)組常用操作_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

PAGE8PAGE8PAGE7PAGE7

課題數(shù)組常用操作課時2課時(90min)教學(xué)目標知識技能目標:(1)掌握與數(shù)組常用操作相關(guān)的函數(shù)的應(yīng)用(2)了解PHP預(yù)定義數(shù)組素質(zhì)目標:(1)能夠領(lǐng)會PHP數(shù)組的作用以及一些數(shù)組常用的操作(2)培養(yǎng)學(xué)生的邏輯思維、辯證思維和創(chuàng)新思維能力(3)掌握基礎(chǔ)知識,加強實踐練習(xí),提升專業(yè)技能和職業(yè)素養(yǎng)教學(xué)重難點教學(xué)重點:數(shù)組常用操作相關(guān)的函數(shù)教學(xué)難點:PHP預(yù)定義數(shù)組教學(xué)方法案例分析法、問答法、討論法、講授法、實踐法教學(xué)用具電腦、投影儀、多媒體課件、教材教學(xué)設(shè)計第1節(jié)課:→→→傳授新知(38min)第2節(jié)課:→傳授新知(20min)→課堂實訓(xùn)(15min)→課堂小結(jié)(3min)→作業(yè)布置(2min)教學(xué)過程主要教學(xué)內(nèi)容及步驟設(shè)計意圖第一節(jié)課課前任務(wù)【教師】布置課前任務(wù),和學(xué)生負責(zé)人取得聯(lián)系,讓其提醒同學(xué)通過文旌課堂APP或其他學(xué)習(xí)軟件,預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識【學(xué)生】完成課前任務(wù)通過課前任務(wù),使學(xué)生預(yù)習(xí)本節(jié)課要學(xué)習(xí)的知識,增加學(xué)生的學(xué)習(xí)興趣考勤(2min)【教師】使用文旌課堂APP進行簽到【學(xué)生】班干部報請假人員及原因培養(yǎng)學(xué)生的組織紀律性,掌握學(xué)生的出勤情況問題導(dǎo)入(5min)【教師】提出以下問題:在PHP編程中經(jīng)常需要對數(shù)組進行不同的操作,你知道PHP中有哪些常用的數(shù)組操作函數(shù)?通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(38min)【教師】通過學(xué)生的回答引入要講的知識,講解PHP中數(shù)組的操作函數(shù)6.3數(shù)組常用操作在PHP編程中經(jīng)常需要對數(shù)組進行不同的操作,下面詳細介紹這些操作。6.3.1數(shù)組與字符串的轉(zhuǎn)換在PHP編程中,使用explode()和implode()函數(shù)可以實現(xiàn)數(shù)組與字符串間的相互轉(zhuǎn)換。1.使用explode()函數(shù)將字符串分割成數(shù)組元素explode()函數(shù)可以將字符串打散為數(shù)組,其語法格式如下:arrayexplode(string$separator,string$string[,int$limit])該函數(shù)返回由字符串組成的數(shù)組,字符串separator作為邊界點將字符串string分割成若干個子串,然后由這些子串構(gòu)成一個數(shù)組。如果設(shè)置了limit參數(shù),則返回的數(shù)組最多包含limit個元素,最后一個元素將包含字符串string的剩余部分。?【教師】通過多媒體展示例6-8的代碼和運行結(jié)果,并進行講解使用explode()函數(shù)將字符串分割成數(shù)組元素。實例代碼如下:<?php $str="Ilovebeijing!"; //定義字符串變量 print_r(explode("",$str)); //以空格分割字符串為數(shù)組元素并輸出?>在論壇管理中常使用該函數(shù)來過濾敏感字,具體方法可參考后面的本章實訓(xùn)。2.使用implode()函數(shù)將數(shù)組元素連接成一個字符串implode()函數(shù)用于返回由數(shù)組元素組合成的字符串,其語法格式如下:stringimplode(string$glue,array$pieces)該函數(shù)用glue指定的字符串作為間隔符將pieces數(shù)組元素連成一個字符串。implode()函數(shù)的glue參數(shù)是可選的,但為了向后兼容,推薦使用兩個參數(shù)。?【教師】通過多媒體展示例6-9的代碼和運行結(jié)果,并進行講解使用implode()函數(shù)將數(shù)組元素連接成字符串。實例代碼如下:<?php $arr=array('I','love','Beijing!');//定義數(shù)組變量 echoimplode("",$arr);//將數(shù)組元素連接為字符串并輸出?>6.3.2統(tǒng)計數(shù)組元素個數(shù)在PHP編程中,遍歷數(shù)組時經(jīng)常需要先計算數(shù)組的長度,作為循環(huán)結(jié)束的判斷條件。count()函數(shù)可用于統(tǒng)計數(shù)組中元素的個數(shù)(即數(shù)組的長度),其語法格式如下:intcount(mixed$array_or_countable[,int$mode])其中,參數(shù)array_or_countable表示要計算長度的數(shù)組或?qū)ο螅豢蛇x參數(shù)mode表示函數(shù)的模式。若mode設(shè)為COUNT_RECURSIVE(或1),count()函數(shù)會遞歸地計算該數(shù)組的元素個數(shù),這在計算多維數(shù)組時特別有用。mode的默認值是0,表示不檢測多維數(shù)組。?【教師】通過多媒體展示例2-20的代碼和運行結(jié)果,并進行講解使用count()函數(shù)統(tǒng)計數(shù)組元素個數(shù)。實例代碼如下:<?php $arr=array(1,3,5,6,9,11);//定義一維數(shù)組 $cars=array//定義多維數(shù)組 ( "Volvo"=>array("XC60","XC90"), "BMW"=>array("X3","X5"), "Toyota"=>array("Highlander") ); echo"數(shù)組\$arr元素個數(shù)為:".count($arr)."<br>"; //6 echo"二維數(shù)組\$cars元素個數(shù)為:".count($cars)."<br>"; //3 echo"二維數(shù)組\$cars遞歸所有元素個數(shù)為:".count($cars,1); //8?>如果count()函數(shù)中第一個參數(shù)不是數(shù)組或者實現(xiàn)Countable接口的對象,該函數(shù)將返回1。6.3.3數(shù)組的排序?【教師】安排學(xué)生掃碼觀看視頻“數(shù)組的排序”,講解知識?【學(xué)生】掃碼觀看、理解、記憶數(shù)組中的元素可以按字母或數(shù)字順序進行降序或升序排列。1.使用sort()函數(shù)對數(shù)組進行升序排列sort()函數(shù)用于對索引數(shù)組進行升序排列,其語法格式如下:boolsort(array&$array[,int$sort_flags])其中,參數(shù)array表示要排序的數(shù)組,可選參數(shù)sort_flags規(guī)定如何比較數(shù)組的元素/項目,可用以下值改變排序行為SORT_REGULAR:默認。把每一項按常規(guī)順序排列(StandardASCII,不改變類型)。SORT_NUMERIC:把每一項作為數(shù)字來處理。SORT_STRING:把每一項作為字符串來處理。SORT_LOCALE_STRING:把每一項作為字符串來處理,基于當前區(qū)域設(shè)置(可通過setlocale()進行更改)。SORT_NATURAL:把每一項作為字符串來處理,使用類似natsort()的自然排序。SORT_FLAG_CASE:可以結(jié)合(按位或)SORT_STRING或SORT_NATURAL對字符串進行排序,不區(qū)分大小寫。2.使用rsort()函數(shù)對數(shù)組進行降序排列rsort()函數(shù)用于對數(shù)值數(shù)組進行降序排列,其語法格式如下:boolrsort(array&$array[,int$sort_flags])參數(shù)array和可選參數(shù)sort_flags的含義和用法與sort()函數(shù)中相同,此處不再贅述。?【教師】通過多媒體展示例6-11的代碼和運行結(jié)果,并進行講解本例分別使用上述算術(shù)運算符進行運算。<?php $numbers=array(3,6,1,28,11,32,46); //定義數(shù)組變量 echo"<br>數(shù)組未排序前元素依次為:<br>"; foreach($numbersas$a){ //使用foreach()循環(huán)遍歷數(shù)組 echo$a."    "; //輸出數(shù)組元素 } echo"<hr>"; sort($numbers); //升序排列數(shù)組元素 echo"<br>數(shù)組升序排列后元素依次為:<br>"; foreach($numbersas$a){ echo$a."    "; //輸} sort($numbers,SORT_STRING); //把數(shù)組元素作為字符串類型升序排列 echo"<br>數(shù)組元素被作為字符串升序排列后依次為:<br>"; foreach($numbersas$a){ echo$a."    "; //輸出11128332466 } echo"<hr>"; rsort($numbers); //降序排列數(shù)組元素 echo"<br>數(shù)組降序排列后元素依次為:<br>"; foreach($numbersas$a){ echo$a."    "; //輸出46322811631 }?>3.使用asort()和ksort()函數(shù)對關(guān)聯(lián)數(shù)組進行排序asort()函數(shù)可以根據(jù)關(guān)聯(lián)數(shù)組的值,對數(shù)組進行升序排列;ksort()函數(shù)可以根據(jù)關(guān)聯(lián)數(shù)組的鍵名,對數(shù)組進行升序排列。它們的其語法格式分別如下:boolasort(array&$array[,int$sort_flags])boolksort(array&$array[,int$sort_flags])?【教師】通過多媒體展示例6-12的代碼和運行結(jié)果,并進行講解關(guān)聯(lián)數(shù)組排序。實例代碼如下:<?php $cars=array("c"=>"BMW","a"=>"CITROEN","d"=>"Jeep","b"=>"BUICK"); echo"<br>數(shù)組未排序前元素依次為:<br>"; foreach($carsas$key=>$a){//使用foreach()循環(huán)遍歷數(shù)組 echo"$key=>$a\n";//輸出數(shù)組元素 } echo"<hr>"; asort($cars);//根據(jù)數(shù)組值,升序排列數(shù)組元素 echo"<br>數(shù)組升序排列后元素依次為:<br>"; foreach($carsas$key=>$a){ echo"$key=>$a\n"; //c=>BMWb=>BUICKa=>CITROENd=>Jeep } echo"<hr>"; ksort($cars);//根據(jù)鍵名,升序排列數(shù)組元素 echo"<br>按鍵名排列數(shù)組后元素依次為:<br>"; foreach($carsas$key=>$a){ echo"$key=>$a\n";//a=>CITROENb=>BUICKc=>BMWd=>Jeep }?>【學(xué)生】聆聽、思考、記錄通過教師的講解和演示,使學(xué)生了解PHP中的數(shù)組中常用的操作函數(shù)第二節(jié)課問題導(dǎo)入(5min)【教師】提出以下問題:在PHP中提供了一些函數(shù)來實現(xiàn)特定的功能,你知道是哪些函數(shù)嗎?【學(xué)生】思考、舉手回答通過問題導(dǎo)入,引導(dǎo)學(xué)生主動思考,激發(fā)學(xué)生的學(xué)習(xí)興趣傳授新知(20min)【教師】通過學(xué)生的回答引入新知,介紹PHP在數(shù)組中查找元素、合并與拆分數(shù)組的方法,以及PHP預(yù)定義數(shù)組的相關(guān)知識6.3.4在數(shù)組中查找元素在數(shù)組中查找或搜索某個元素或鍵名是否存在,可以通過遍歷數(shù)組進行查找,也可以使用PHP提供的函數(shù)進行查找。1.使用in_array()函數(shù)檢查數(shù)組中是否存在某值in_array()函數(shù)用于檢查數(shù)組中是否存在指定的值,其語法格式如下:boolin_array(mixed$search,array$haystack[,bool$strict])該函數(shù)表示在數(shù)組haystack中搜索值search,若找到該值返回true,否則返回false。如果可選參數(shù)strict設(shè)置為true,則in_array()函數(shù)還會檢查搜索的值與數(shù)組中的值的數(shù)據(jù)類型是否相同。2.使用array_key_exists()函數(shù)檢查數(shù)組中是否存在給定的鍵名或索引array_key_exists()函數(shù)用于檢查某個數(shù)組中是否存在指定的鍵名或索引,其語法格式如下:boolarray_key_exists(mixed$key,array$search)該函數(shù)表示在數(shù)組search中搜索是否存在鍵名或索引為key的元素,若存在則返回true,否則返回false。3.使用array_search()函數(shù)搜索數(shù)組中給定的值array_search()函數(shù)用于搜索數(shù)組中某個給定的值,并返回對應(yīng)的鍵名,其語法格式如下:mixedarray_search(mixed$value,array$haystack[,bool$strict])該函數(shù)表示在數(shù)組haystack中搜索給定的值value,若找到該值返回鍵名,否則返回false。如果可選參數(shù)strict設(shè)置為true,則array_search()函數(shù)在數(shù)組中搜索數(shù)據(jù)類型和值與給定值都一致的元素。?【教師】通過多媒體展示例6-13的代碼和運行結(jié)果,并進行講解在數(shù)組中查找元素。實例代碼如下:<?php$arr=array("a"=>"red","b"=>"green","c"=>"blue"); var_dump(in_array("red",$arr));echo"<br>"; var_dump(in_array("Red",$arr));echo"<br>"; var_dump(array_key_exists("b",$arr));echo"<br>"; var_dump(array_key_exists("B",$arr));echo"<br>"; var_dump(array_search("blue",$arr));echo"<br>"; var_dump(array_search("Blue",$arr));echo"<br>";?>由以上運行結(jié)果可以看出,上述函數(shù)在查找字符串時,是區(qū)分大小寫的。6.3.5數(shù)組的合并與拆分在程序開發(fā)過程中,通常需要將多個數(shù)組合并為一個數(shù)組,或者將某個數(shù)組中的一部分取出構(gòu)成一個新的數(shù)組,此時可以使用數(shù)組的合并與拆分函數(shù)。1.使用array_merge()函數(shù)合并一個或多個數(shù)組array_merge()函數(shù)可以把一個或多個數(shù)組合并為一個新數(shù)組,其語法格式如下:arrayarray_merge(array$array1[,array$...])該函數(shù)返回合并后的新數(shù)組,第二個數(shù)組中的值附加在前一個數(shù)組值的后面,往后依次排列。如果兩個或更多個數(shù)組元素有相同的字符串鍵名,則最后的元素會覆蓋前面的元素;如果是數(shù)字鍵名,則后面的元素不會覆蓋原來的元素,而是附加到后面,且合并后的數(shù)組的鍵名將會以數(shù)字連續(xù)的方式重新設(shè)置鍵名。如果僅向array_merge()函數(shù)輸入一個數(shù)組,且鍵名是整數(shù),則該函數(shù)將返回帶有整數(shù)鍵名的新數(shù)組,其鍵名以0開始進行重新索引。?【教師】通過多媒體展示例6-14的代碼和運行結(jié)果,并進行講解合并數(shù)組。實例代碼如下:<?php $a1=array("a"=>"red","b"=>"green");//定義鍵名為字符串的數(shù)組 $a2=array("c"=>"blue","b"=>"yellow"); $a3=array("c"=>"blue","d"=>"yellow"); $a4=array("3"=>"blue","5"=>"yellow","7"=>"red","9"=>"green");//鍵值為整數(shù)的數(shù)組 echo"<br>合并數(shù)組含有相同的字符串鍵名:<br>"; print_r(array_merge($a1,$a2)); //Array([a]=>red[b]=>yellow[c]=>blue) echo"<br><br>合并數(shù)組沒有相同的字符串鍵名:<br>"; print_r(array_merge($a1,$a3)); //Array([a]=>red[b]=>green[c]=>blue[d]=>yellow) echo"<br><br>合并鍵名為整數(shù)的單個數(shù)組:<br>"; print_r(array_merge($a4)); //Array([0]=>blue[1]=>yellow[2]=>red[3]

=>green)?>2.使用array_slice()函數(shù)從數(shù)組中取出一段序列array_slice()函數(shù)可以在數(shù)組中根據(jù)條件取出一段值,其語法格式如下:arrayarray_slice(array$array,int$start[,int$length[,bool$preserve_keys]])該函數(shù)返回根據(jù)start和length參數(shù)所指定的array數(shù)組中的一段序列,start規(guī)定取出數(shù)組子集的開始位置,如果該值為正數(shù),則從前向后開始?。蝗绻撝禐樨摂?shù),則從后向前取start絕對值?!?2”表示從數(shù)組的倒數(shù)第二個元素開始??蛇x參數(shù)length規(guī)定取出數(shù)組元素的個數(shù)。如果該值為整數(shù),則返回該數(shù)量的元素;如果該值為負數(shù),則函數(shù)將在距離數(shù)組末端length遠的地方終止取出。如果沒有設(shè)置該值,則返回從start參數(shù)設(shè)置的位置開始直到數(shù)組末端的所有元素。可選參數(shù)preserve_keys規(guī)定函數(shù)是保留鍵名還是重置鍵名。當其值為true時,表示保留鍵名;當其值為false(默認)時,表示重置鍵名。3.使用array_splice()函數(shù)將數(shù)組中的選定元素用其他元素替代array_splice()函數(shù)可以從數(shù)組中移除選定的元素,并用新元素替代,該函數(shù)返回移除或替換元素后的數(shù)組,其語法格式如下:arrayarray_splice(array&$array,int$start[,int$length[,mixed$replacement]])該函數(shù)把array數(shù)組中由start和可選參數(shù)length指定的元素移除,如果定義了可選參數(shù)replacement,則用replacement數(shù)組中的元素替代移除的元素,接著返回最后生成的數(shù)組。其中array中的數(shù)字鍵名不被保留。如果函數(shù)沒有移除任何元素(length=0),則將從start參數(shù)的位置插入替代數(shù)組。?【教師】通過多媒體展示例6-15的代碼和運行結(jié)果,并進行講解拆分數(shù)組。實例代碼如下:<?php $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow"); $a2=array("a"=>"purple","b"=>"orange"); echo"<br>數(shù)組默認為:<br>"; foreach($a1as$key=>$a){ //使用foreach()循環(huán)遍歷數(shù)組 echo"$key=>$a\n"; //輸出數(shù)組元素 } echo"<hr>"; echo"從數(shù)組中取出一部分元素:<br>"; print_r(array_slice($a1,1,2)); //Array([b]=>green[c]=>blue) echo"<br>"; print_r(array_slice($a1,-2,1)); //Array([c]=>blue) echo"<hr>"; echo"將數(shù)組中的選定元素用其他元素替代:<br>"; print_r(array_splice($a1,0,2,$a2)); //Array([a]=>red[b]=>green) echo"<hr>"; echo"被替代后的數(shù)組元素:<br>"; foreach($a1as$key=>$a){ //使用foreach()循環(huán)遍歷數(shù)組 echo"$key=>$a\n"; //輸出數(shù)組元素 }?>6.4PHP預(yù)定義數(shù)組除自定義數(shù)組外,PHP還提供了一組預(yù)定義數(shù)組,這些數(shù)組可以獲取來自Web服務(wù)器、運行環(huán)境和用戶輸入的數(shù)據(jù)等信息。這些數(shù)組在全局范圍內(nèi)自動生效,也稱為自動全局變量或者超全局變量。?【教師】通過多媒體展示“常用預(yù)定義數(shù)組”表格,并進行講解常用預(yù)定義數(shù)組數(shù)組說明$_SERVER[]獲取瀏覽當前頁面的客戶IP地址$_GET[]獲取用GET方法傳遞的參數(shù)的有關(guān)信息$_POST[]獲取用POST方法傳遞的參數(shù)的有關(guān)信息$_COOKIE[]獲取和設(shè)置當前網(wǎng)站的Cookie標識$_FILES[]獲取通過POST方法向服務(wù)器上傳的數(shù)據(jù)的有關(guān)信息$_ENV[]PHP解析所在服務(wù)器環(huán)境的有關(guān)信息$_REQUEST

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論