




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章PHP的數據處理數據處理在PHP編程中有重要的地位,不論是編什么樣的程序都少不了和各種各樣的數據打交道。本章就來為讀者介紹在使用PHP進行編程時如何對各種各樣的數據進行處理。包括怎樣判斷數據類型、PHP中常用的數學函數、PHP中常用的字符串函數、PHP中常用的數組函數等。7.1怎樣判斷數據類型在使用數據變量時,先弄清該變量屬于什么類型是很有必要的。只有知道了數據變量的類型,才能對它進行相關的操作。7.1怎樣判斷數據類型在PHP中有專門的函數來判斷數據的類型,這就是is系列函數。常用的判斷數據類型函數見表。【示例7-1】以下代碼演示表中函數的使用方法。函數名作用返回值is_array(mixedvar)判斷變量是否為數組如果參數var是數組就返回TRUE,否則返回FALSEis_bool(mixedvar)判斷變量是否為布爾型如果參數var是布爾型值即TRUE或FALSE就返回TRUE,否則返回FALSEis_float(mixedvar)判斷變量是否為浮點數果參數var是浮點數則返回TRUE,否則返回FALSEis_int(mixedvar)判斷變量是否為整型變量如果參數var為整型變量INT則返回TRUE,否則返回FALSEis_null(mixedvar)判斷變量是否為NULL值如果參數var未被定義或者被設置為NULL或者雖然已經被定義但又被unset()取消定義,則返回TRUE,否則返回FALSEis_numeric(mixedvar)判斷變量是否為數字或者數字字符串如果參數var為數字或者數字字符串則返回TRUE,否則返回FALSEis_object(mixedvar)判斷變量是否為一個對象如果參數var為OBJECE就返回TRUE,否則返回FALSEis_scalar(mixedvar)判斷變量是否為一個標量(標量即最小的變量單位,只包括integer、float、string或boolean的變量,而array(數組)、object(對象)和resource(資源)則不是標量)如果參數var為標量則返回TRUE,否則返回FALSEis_string(mixedvar)判斷變量是否為字符串如果參數var為字符串返回TRUE,否則返回FALSEisset(mixedvar)判斷變量是否設置如果變量存在就返回TRUE,否則返回FALSE。另外被設置為NULL值的變量在使用isset()時也將返回FALSE該函數只能用于變量,因為傳遞任何其它參數都將造成解析錯誤7.2PHP中常用的數學函數數學運算和數字的操作在PHP的數據處理中占有很大比重。無論是大型程序,還是只有幾行代碼的小程序,只要牽涉到數字都需要用數學的方法進行處理。7.2.1數學計算函數這一小節為讀者介紹常用的數學計算函數,詳見表。【示例7-2】以下代碼演示表中所示函數的使用方法。函數名作用返回值abs(mixedvar)絕對值函數,返回參數var的絕對值如果參數為正,直接返回;如果為負,去掉負號后返回ceil(floatvalue)進一法取整數函數,返回不小于參數value的下一個整數。如果參數為整型數,直接返回參數;如果參數為浮點型數,則返回值為參數的小數部分進一位exp(floatarg)計算指數函數,計算e的指數。用“e”作為自然對數的底2.718282返回e的arg次方值floor(float,value)舍去法取整數函數,返回不大于參數value的下一個整數如果參數為整型數,直接返回參數;如果參數為浮點型數,則返回值為參數舍去小數部分后的值log10()計算對數函數。返回以10為底的對數返回以10為底的對數值sqrt(floatarg)計算平方根函數。返回參數arg的平方根返回參數arg的平方根7.2.2數學三角函數這一小節來介紹常用的數學三角函數。在介紹三角函數之前先介紹一個函數:deg2rad()函數,它的作用是把角度轉換為弧度。學過三角函數的讀者都知道,三角函數就是指正弦、余弦、正切、余切以及這些函數對應的反函數等。PHP中也有類似的函數,并且表達方法幾乎與數學的表達方法一模一樣。PHP中的常用三角函數有以下幾個,見表。函數名作用返回值sin(floatarg)正弦函數回參數arg的正弦值,參數arg為弧度cos(floatarg)余弦函數返回參數arg的余弦值,參數arg為弧度tan(floatarg)正切函數回參數arg的正切值,參數arg為弧度asin(floatarg)反正弦函數返回參數arg的反正弦值,參數arg為弧度。函數asin()是函數sin()的反函數acos(floatarg)反余弦函數返回參數arg的反余弦值,參數arg為弧度。函數acos()是函數cos()的反函數atan(floatarg)反正切函數返回參數arg的反正切值,參數arg為弧度。函數atan()是函數tan()的反函數7.2.2數學三角函數【示例7-3】以下代碼演示三角函數的使用。【示例7-4】以下代碼演示使用三角函數結合GD函數來實現畫圖功能。7.2.3很有用的最值函數PHP中的最值函數有以下幾個:max(numberarg1,numberarg2),求最大值函數,返回參數中數值最大的值。min(numberarg1,numberarg2),求最小值函數,返回參數中數值最小的值。【示例7-5】以下代碼演示max()函數的使用方法。【示例7-6】以下代碼演示min()函數的使用方法。7.2.4產生隨機數函數在進行PHP編程時,有時需要一些隨機的數字,比如用戶身份驗證。為了防止站外提交,生成一組隨機數字,然后在后臺判斷。PHP中有專門的隨機數函數。rand([intmin,intmax])該函數用于產生一個隨機數。隨機數的范圍在參數min與max之間。【示例7-7】以下代碼演示rand()函數的使用方法。7.2.5進制轉換函數在實際工作中,有時需要進行進制的轉換。PHP庫函數中也為用戶準備好了這樣的函數。PHP中的進制轉換函數一共有六個,見表:函數名作用返回值bindec(stringbinary_string)二進制轉換為十進制返回參數binary_string二進制數對應的十進制等價值decbin(intnumber)十進制轉化為二進制返回參數int十進制數對應的二進制等價值。dechex(intnumber)十進制轉化為十六進制返回參數int十進制數對應的十六進制等價值decoct(intnumber)十進制轉化為八進制返回參數int十進制數對應的八進制等價值hexdec(stringhex_string)十六進制轉化為十進制返回參數hex_string十六進制數對應的十進制等價值ctdec(stringoctal_string)八進制轉換為十進制返回參數octal_string八進制數對應的十進制等價值7.2.5進制轉換函數【示例7-8】以下代碼演示如何使用進制轉換函數。除了這六個函數以外,PHP中還有一個函數:base_convert(stringnumber,Intfrombase
,intto
base)該函數可以實現任意進制之間的轉換。【示例7-9】以下代碼演示如何使用base_convert()函數來進行進制轉換。7.2.6其他數學函數PHP中還有以下幾個常用的數學函數:hypot()函數、pi()函數等。hypot(floatx,floaty)該函數用來計算直角三角形斜邊的長度。返回值為sqrt(x*x+y*y)。pi()函數,此函數無參數,返回圓周率的近似值:3.1415926535898。技巧:可以使用系統預定義常量:M_PI來代替這個函數。【示例7-10】以下代碼演示hypot()函數的使用。【示例7-11】以下代碼演示pi()函數使用。7.3PHP中常用的字符串函數字符串操作的重要性不亞于數學計算。在PHP編程過程中,不管是進行文本的處理還是字符的操作都離不開字符串。大量信息都是用字符串來存儲的。所以說只有善于處理字符串才能稱得上是一個合格的程序員。這一節就來講解PHP中常用的字符串函數。7.3.1取得字符串長度要想處理一個字符串,第一步就要了解該字串的長度。PHP中需要通過相應的函數來取得,這個函數就是strlen():strlen(string)該函數用來取得字符串的長度。【示例7-12】以下代碼演示strlen()函數的使用。7.3.2輸出字符串PHP中用于輸出字符串的函數有以下幾個:echo函數,用于字符串的輸出。print()函數,用于輸出字符串:print(string)參數string為字符串變量或者常量。函數返回一個布爾值。當執行成功時返回true,反之返回false。printf()函數,用于將字符串格式化輸出:printf(stringformat,mixed[args])輸出格式依照參數format的內容,具體內容見下面的sprintf()格式化字符串函數。7.3.2輸出字符串sprintf()函數,用于格式化字符串。sprintf(stringformat,mixed[args])參數format是轉換的格式,以百分比符號%開始到轉換字符為止。格式的內容按照順序為:填空字元:0表示空格填0;空格是內定值。對齊方式:內定值為向右對齊,負號(-)表向左對齊。欄位寬度:為最小寬度。精確度:指在小數點后的浮點數位數。7.3.2輸出字符串型態:如表所示。因為echo與print()函數相對簡單,這里就不多做介紹,重點來介紹一下sprintf()這個格式化函數。%印出百分比符號不轉換b整數轉成二進制c整數轉成對應的ASCII字符d整數轉成十進制f倍精確度數字轉成浮點數o整數轉成八進制s整數轉成字串x整數轉成小寫十六進制X整數轉成大寫十六進制7.3.2輸出字符串關于如何使用sprintf()函數,先來看一個經典的實例:01
<?php02
$money1=68.75;03
$money2=54.35;04
$money=$money1+$money2;
//此時變量$money值為"123.1"05
$formatted=sprintf("%01.2f",$money);
//此時變量$formatted值為"123.10"06
?>【示例7-13】以下代碼演示sprintf()格式化函數的使用方法。7.3.3截取字符串在進行字符串處理的時候,有時需要對字符串進行截取。在PHP中要做到這一點也是很簡單的,有一個專門的函數供用戶調用,這個函數就是substr()。substr(stringstring,intstart,int[length])函數返回字符串string從start開始的length個字符。如果length為空,則取從start到字符串結束。如果start為負數,則從字符串末尾開始取。如果length為負則表示取到倒數第length個字符。【示例7-14】以下代碼演示使用substr()函數截取字符串。7.3.4按特定字符切開字符串PHP中提供了如下的函數來完成這項功能:explode(),切開字符串函數:explode(string
separator,stringstring[,intlimit])本函數將字符串string依指定的字符或字符串separator分開,如果使用了limit參數則返回的數組包含最多limit個元素,其中最后一個元素將包含string的剩余部分。函數的返回值是以返回字符串為元素的字符串數組。split(),用正則表達式把字符串分割到數組中。split(stringpattern,stringstirng[,intlimit])本函數返回一個字符串數組,每個元素為字符串string經過區分大小寫的正則表達式pattern作為邊界分割出的子串。如果設定了limit,則返回的數組最多包含limit個元素,其中最后一個單元包含string中剩余的部分。如果出錯,則返回false。strtok(),切開字符串函數。strtok(stringstr,stringtoken)本函數將傳回字符串str依據token的值分割的子字符串。【示例7-15】以下代碼演示分割字符串函數的使用。7.3.5去除字符串中的特殊符號在進行實際PHP編程的時候,處理的字符串有可能是來自于網頁中,里面可能包含有HTML或者PHP標記。這時就需要把它們去除之后再做處理。在PHP中也有專門去除字符串中特殊符號標記的字符串處理函數strip_tags()。strip_tags(stringstr)該函數用于去掉字符串參數str中的HTML及PHP標記,將處理之后的字符串作為函數的返回值。【示例7-16】以下代碼演示如何使用strip_tags()函數來去除字符串中的特殊標記。7.3.6轉換字符串中的特殊符號為HTML標記編寫Web互動網頁時,安全問題是一定要考慮的。一個不可忽視的問題就是對用戶提交信息的處理。在PHP中有一個函數實現這樣的功能:把用戶提交內容(字符串)中的特殊符號轉換為HTML實體,這個函數就是:htmlspecialchars()。htmlspecialchars(stringstring)該函數實現功能:將字符串參數string中的特殊符號(如:<、>、"等)轉化為HTML標記。其具體轉換內容如下:&,轉換成&。",轉換成"。<,轉換成<。>,轉換成>。【示例7-17】以下代碼演示如何使用htmlspecialchars()函數對字符串進行轉換處理。7.3.7加入轉義符在數據庫操作時,如果把未經操作的單引號寫入庫里就會使SQL語句發生錯誤。所以給特殊字符加上轉義符就顯得尤為重要。同理,顯示的時候就要把轉義符去除,這樣庫里的內容才能正常顯示。因此加入轉義符函數addslashes(stringstr)和去除轉義符函數stripslashes(stringstr)在PHP里也經常用到。7.3.8比較字符串函數兩個數值,不論是整型還是浮點型都能夠比較大小。而兩個字符串也可以比較大小。在PHP中,有一個函數專門用來比較字符串的大小。這個函數就是strcmp()。其使用格式如下:intstrcmp(stringstr1,stringstr2)參數str1與str2表示兩個字符串變量,函數返回一個整數。如果str1大于str2則返回正數;如果str1小于str2則返回負數;如果兩個字符串完全一致則返回0。【示例7-18】以下代碼演示如何使用strcmp()函數。7.3.9改變字符串的大小寫在進行字符串處理的時候,有時需要對字符串中字母的大小寫進行轉換。這時就需要用到strtolower()函數和strtoupper()函數。stringstrtolower(stringstr)該函數用于把字符串參數str中的所有大寫字母轉換為小寫字母,把轉換后的新字符串作為函數的返回值;stringstrtoupper(stringstr)該函數用于把字符串參數str中的所有小寫字母轉換為大寫字母,把轉換后的新字符串作為函數的返回值。【示例7-19】以下代碼演示改變字符串大小寫函數的使用。7.3.10其它常用字符串處理函數除了以上幾小節介紹的字符串處理函數之外,在進行PHP編程及字符串處理過程中,還有其它一些常用的字符串處理函數。由于相對于前幾小節介紹的函數,這些函數使用頻率相對較低。所以只對它們的使用格式、參數、返回值等情況做簡單介紹。stringchop()函數:stringchop(stringstr)該函數用于去除字符串str中的連續空白,返回值為處理后的字符串;stringltrim()函數:stringltrim(stringstr)該函數功能與chop類似,也是去除字符串中的連續空白帶(whitespace),并把處理結果返回;stringmd5()函數:stringmd5(stringstr)該函數用于把字符串str進行MD5加密,并把加密后的字符串作為函數的返回值。這個函數在處理用戶的密碼時經常用到,一般是把用戶密碼經md5()函數加密后再入庫;stringnl2br()函數:stringnl2br(stringstr)該函數用于把字符串str中的回車換行轉換為HTML標記中的<br>,并把處理結果返回。這也是一個很有用的函數,特別是用在用戶提交的內容中存在換行時,使用這個函數就能保持用戶輸入的格式;stringstr_replace()函數:stringstr_replace(stringneedle,stringstr,stringhaystack)該函數將字符串str代入haystack字符串中,將所有的needle置換成str。例如:使用str_replace("a","b","abcd"),函數將返回“bbcd”。7.4PHP中常用的數組處理函數在PHP編程過程中,有相當大的部分是與數組打交道。入庫的內容、統計相關內容等等操作都離不開數組,很多信息都是用數組作為載體的。所以數組的操作在PHP編程中占有很大的比重,只有熟練地操作數組才能熟練編寫PHP程序。這一節就來介紹PHP中常用的數組處理函數。7.4.1新建一個數組既然要操作數組,第一步就是要新建一個數組。新建數組也有相關的函數,這個函數就是array()。array(…)函數用來新建一個數組,傳回的數值是數列形態。參數可以是帶有=>運算符的索引。【示例7-20】以下代碼演示array()函數的使用,同時也復習一下如何新建一個數組。7.4.2計算數組的元素個數在對一個數組操作之前,得知數組的元素個數是很有必要的。在PHP中計算數組元素個數的方法非常簡單,可以使用count()函數來完成。count(mixedvar)該函數的參數可以是數組或者為整數變量。如果參數是數組則傳回數組元素的個數;如果參數為整數則分兩種情況:如果整數變量還沒有值則傳回“0”,如果已經賦值則傳回“1”。【示例7-21】以下代碼演示count()函數的使用方法。7.4.3對數組排序在實際PHP編程時,有時需要對數組進行排序。通常對數組進行排序的方法有幾種:冒泡法、對分法等。但是在PHP中對數組的排序就變得相當的簡單,有專門對數組進行排序的sort()和rsort()函數。voidsort(arrayarray)該函數對數組進行排序,使數組按照從小到大的順序重新排列;voidrsort(arrayarry)該函數和sort()函數一樣對數組進行排序,與sort()函數不同的是rsort()函數將使數組按從大到小的順序重新排列。【示例7-22】以下代碼演示使用sort()和rsort()函數實現對數組進行排序操作。7.4.4對數組進行自定義排序有的時候,單純使用上一小節介紹的sort()函數或rsort()函數均不能完全滿足對數組排序的要求。如下面的數組:<?php$temp=array(”班長”,”科代表”,”副班長”,”團支書”);?>如果想要實現這樣的排序:團支書>班長>副班長>科代表。這時不管是使用sort()函數還是使用rsort()函數,都不能勝任。因為這種排序標準是自定義的。出現這種情況,就要使用另一個PHP數組操作函數:usort()了。usort()的使用格式如下:voidusort(arrayarray,functioncmp_function)該函數用來對數組進行排序,使數組按照用戶自定義比較函數所規定的順序重新排列。【示例7-23】以下代碼演示usort()函數的使用方法。7.4.5移動數組指針每一個數組變量都有一個內部指針,它指向當前的數組元素。在進行PHP編程時,有時需要對數組的指針進行移動操作。在PHP庫函數中,有一組函數來實現這一操作。這些函數有以下幾個:current()函數,傳回數組當前指針指向的元素;end()函數,將數組的指針移動到數組尾部,即指向數組最后的元素;next()函數,將數組的指針向后移動一位,即指向當前的后一個元素;prev()函數,將數組的指針向前移動一位,即指向當前的前一個元素;reset()函數,將數組的指針移動到數組頭部,即指向數組的第一個元素。【示例7-24】以下代碼演示數組指針操作函數的使用方法。7.4.6獲取數組當前元素通過7.4.5小節對PHP中移動數組指針函數的介紹,讀者知道要獲得數組當前元素,可以使用的方法就是使用current()函數。mixedcurrent(arrayarray)該函數的返回值即為當前數組指針指向的元素。7.4.7移去數組中重復的值如果一個數組中有大量的數據,在進行數組處理的時候,將其中重復冗余數據的值移除去就顯得很有必要。在PHP中有一個函數可以移去數組中重復的值,這個函數就是:array_unique()。其格式如下:arrayarray_unique(arrayarray)array_unique()函數用于移去數組中重復的值。該函數將數組參數array中重復的值移除,將處理過的新數組作為函數的返回值返回。【示例7-25】以下代碼演示array_unique()函數的使用方法。7.4.8計算數組中所有值出現的次數在使用數組時,如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 私家車租賃合同模板
- 酒店花卉裝飾租賃合同
- 慶國慶迎中秋雙節58
- 1集體生活成就我 公開課一等獎創新教案 道德與法治七年級上冊
- 2025年度高級維修電工資格考試理論知識復習題庫及答案(共230題)
- 商務合作保密契約
- 美術第1課 聚聚散散教案
- 新媒體節目拍攝與剪輯技術服務合同2025
- 產品銷售與安裝合同范本
- 2025石油買賣合同 標準版模板大全
- 《民航飛機自動飛行控制系統》課件合集
- 《華為干部賦能手冊》值得收藏課件
- 二次函數壓軸題(二)【圖像與取值范圍】
- 兒科學課件:化膿性腦膜炎、病毒性腦炎、腦膜炎
- 安全事故隱患舉報、獎勵制度
- 《智能系統》第7章 自主無人系統
- 樹木栽植檢查記錄表
- Q∕SY 1670.1-2014 投產方案編制導則 第1部分:原油、成品油管道
- WS377.4-2013 婦女保健基本數據集 第4部分:孕產期保健服務與高危管理
- 刺激性氣體中毒課件
- 巧用Mapinfo軟件SQL查詢功能--肖2017
評論
0/150
提交評論