- PHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)實(shí)踐教程
- 盧欣欣 李靖主編
- 3000字
- 2021-09-17 17:55:55
3.6 常用數(shù)組函數(shù)
PHP提供了豐富且功能強(qiáng)大的數(shù)組函數(shù),主要包括統(tǒng)計(jì)函數(shù)、數(shù)組指針函數(shù)、檢索函數(shù)、排序函數(shù)、數(shù)組元素操作函數(shù)等,具體如表3-1所示。
表3-1 常用數(shù)組函數(shù)

3.6.1 統(tǒng)計(jì)函數(shù)
PHP提供的數(shù)組統(tǒng)計(jì)函數(shù)較多,如統(tǒng)計(jì)元素個(gè)數(shù)、求最大值、最小值等,在此主要介紹表3-2所示的一些函數(shù)。
表3-2 統(tǒng)計(jì)函數(shù)

(續(xù))

1. count()函數(shù)
語(yǔ)法:int count(mixed$arr [,int$mode])
功能:用于統(tǒng)計(jì)數(shù)組arr中元素的個(gè)數(shù)。如果數(shù)組arr為多維數(shù)組的話(huà),可以將mode參數(shù)的值設(shè)置為1或者COUNT_RECURSIVE,會(huì)遞歸計(jì)算多維數(shù)組arr中所有元素的個(gè)數(shù)。
示例:

2. max()函數(shù)
語(yǔ)法:mixed max(array$values)
功能:用于統(tǒng)計(jì)并計(jì)算數(shù)組中最大的值。values為統(tǒng)計(jì)的數(shù)組。
示例:

3. min()函數(shù)
語(yǔ)法:mixed min(array$values)
功能:用于統(tǒng)計(jì)并計(jì)算數(shù)組中最小的值。values為統(tǒng)計(jì)的數(shù)組。
示例:

4. array sum()函數(shù)
語(yǔ)法:number array_sum(array$arr)
功能:將數(shù)組arr中所有值的和以整數(shù)或浮點(diǎn)數(shù)的結(jié)果返回。
說(shuō)明:PHP會(huì)自動(dòng)將數(shù)組中的非數(shù)值類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成整數(shù)或浮點(diǎn)數(shù)。
示例:

number是PHP數(shù)據(jù)類(lèi)型中的一種偽類(lèi)型,表示整型和浮點(diǎn)型。
5. array_product()函數(shù)
語(yǔ)法:number array_product(array$arr)
功能:將數(shù)組arr中所有值的乘積以整數(shù)或浮點(diǎn)數(shù)的結(jié)果返回。
說(shuō)明:PHP會(huì)自動(dòng)將數(shù)組中的非數(shù)值類(lèi)型的數(shù)據(jù)轉(zhuǎn)換成整數(shù)或浮點(diǎn)數(shù)。
示例:

6. array_count_values()函數(shù)
語(yǔ)法:array array_count_values(array$arr)
功能:統(tǒng)計(jì)數(shù)組arr中所有值出現(xiàn)的次數(shù),結(jié)果返回一個(gè)新數(shù)組。新數(shù)組中用arr的值作為鍵名,該值出現(xiàn)的次數(shù)作為新數(shù)組的值。
示例:

3.6.2 數(shù)組指針函數(shù)
PHP內(nèi)置了管理數(shù)組“當(dāng)前指針”的函數(shù),使用這些函數(shù)可以移動(dòng)數(shù)組“當(dāng)前指針”并讀取數(shù)組元素,從而實(shí)現(xiàn)數(shù)組的遍歷。在此主要介紹表3-3所示的一些函數(shù)。
表3-3 數(shù)組指針函數(shù)

1. current()函數(shù)
語(yǔ)法:mixed current(array &$arr)
功能:用于返回?cái)?shù)組arr中當(dāng)前單元的值。
說(shuō)明:每個(gè)數(shù)組中都有一個(gè)內(nèi)部的指針,指向它“當(dāng)前的”單元,初始指向插入到數(shù)組中的第一個(gè)單元。current()返回當(dāng)前被內(nèi)部指針指向的數(shù)組單元的值,并不移動(dòng)指針。如果內(nèi)部指針指向超出了單元列表的末端,current()返回false。
示例:

2. key()函數(shù)
語(yǔ)法:mixed key(array$arr)
功能:用于返回?cái)?shù)組arr中當(dāng)前單元的鍵名。
示例:

3. next()函數(shù)
語(yǔ)法:mixed next(array &$arr)
功能:將數(shù)組arr中的內(nèi)部指針向前移動(dòng)一位,返回?cái)?shù)組內(nèi)部指針指向的下一個(gè)單元的值,如果沒(méi)有更多單元,則返回false。
示例:

4. prev()函數(shù)
語(yǔ)法:mixed prev(array &$arr)
功能:將數(shù)組arr的內(nèi)部指針倒回一位,返回?cái)?shù)組內(nèi)部指針指向的前一個(gè)單元的值,如果沒(méi)有更多單元,則返回false。
示例:

5. end()函數(shù)
語(yǔ)法:mixed end(array &$arr)
功能:將數(shù)組arr的內(nèi)部指針移動(dòng)到最后一個(gè)單元,并返回該單元的值。
示例:

6. reset()函數(shù)
語(yǔ)法:mixed reset(array &$arr)
功能:將數(shù)組arr的內(nèi)部指針倒回到第一個(gè)單元,并返回第一個(gè)數(shù)組單元的值。
示例:

3.6.3 檢索函數(shù)
PHP提供的數(shù)組檢索函數(shù)主要是對(duì)數(shù)組元素的“鍵”或“值”進(jìn)行查詢(xún),在此主要介紹表3-4所示的一些函數(shù)。
表3-4 檢索函數(shù)

1. array_keys()函數(shù)
語(yǔ)法:array array_keys(array$arr [,mixed$search_value[,bool$strict]])
功能:用于獲取arr數(shù)組中的鍵名,返回值是數(shù)組。如果指定了可選參數(shù)search_value,則只返回search_value值的鍵名,否則數(shù)組中的所有鍵名都會(huì)被返回。參數(shù)strict用于判斷在搜索的時(shí)候是否使用嚴(yán)格的比較(===)符號(hào),默認(rèn)值為false。
示例:

2. array_values()函數(shù)
語(yǔ)法:array array_values(array$arr)
功能:返回arr數(shù)組中的所有值并為其建立數(shù)字索引。
示例:

3. in_array()函數(shù)
語(yǔ)法:bool in_array(mixed$searchvalue,array$arr [,bool$strict])
功能:在數(shù)組arr中搜索searchvalue,如果找到則返回true,否則返回false。如果第三個(gè)參數(shù)strict的值為true,則in_array()函數(shù)還會(huì)檢查searchvalue和數(shù)組中值的數(shù)據(jù)類(lèi)型是否相同。
示例:

4. array_search()函數(shù)
語(yǔ)法:mixed array_search (mixed searchvalue, array arr[,bool strict])
功能:在數(shù)組arr中搜索searchvalue,如果找到則返回鍵名,否則返回false。如果第三個(gè)參數(shù)strict的值為true,則還會(huì)檢查searchvalue和數(shù)組中值的數(shù)據(jù)類(lèi)型是否相同。
示例:

5. array_key_exists()函數(shù)
語(yǔ)法:bool array_key_exists(mixed$key,array$arr)
功能:檢查給定的鍵名key是否存在于數(shù)組arr中。若給定的key存在于數(shù)組中時(shí)返回true,否則返回false。key可以是任何能作為數(shù)組索引的值。
示例:


6. array unique()函數(shù)
語(yǔ)法:array array_unique(array$arr [,int$sort flags])
功能:返回一個(gè)移除數(shù)組arr中重復(fù)值的新數(shù)組。該函數(shù)先將值作為字符串排序,然后對(duì)每個(gè)值只保留第一個(gè)遇到的鍵名。參數(shù)sort_flags用于修改排序方式,其中SORT_REGULAR表示按照通常方法比較,SORT_NUMERIC表示按照數(shù)字形式比較,SORT_STRING表示按照字符串形式比較,SORT_LOCALE_STRING表示根據(jù)當(dāng)前的本地化設(shè)置來(lái)比較。默認(rèn)為SORT_STRING,按照字符串比較。
示例:

3.6.4 排序函數(shù)
在操作數(shù)組時(shí),經(jīng)常對(duì)數(shù)組中的元素進(jìn)行排序,PHP提供了多種數(shù)組排序函數(shù),在此主要介紹表3-5所示的一些函數(shù)。
表3-5 排序函數(shù)

1. sort()函數(shù)
語(yǔ)法:bool sort(array$arr)
功能:按升序?qū)rr數(shù)組的值排序。為數(shù)組賦予新的“整數(shù)”鍵名,原有的鍵名將被刪除。
示例:


2. asort()函數(shù)
語(yǔ)法:bool asort(array$arr)
功能:按升序?qū)rr數(shù)組的值排序,排序后保持?jǐn)?shù)組元素原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系。
示例:

3. rsort()函數(shù)
語(yǔ)法:bool rsort(array$arr)
功能:按降序?qū)rr數(shù)組的值排序。為數(shù)組賦予新的“整數(shù)”鍵名,原有的鍵名將被刪除。
示例:

4. arsort()函數(shù)
語(yǔ)法:bool arsort(array$arr)
功能:按降序?qū)rr數(shù)組的值排序,排序后保持?jǐn)?shù)組元素原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系。
示例:

5. ksort()函數(shù)
語(yǔ)法:bool ksort(array$arr)
功能:按照鍵名對(duì)arr數(shù)組元素進(jìn)行升序排序,排序后保持?jǐn)?shù)組元素原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系。
示例:


6. krsort()函數(shù)
語(yǔ)法:bool krsort(array$arr)
功能:按照鍵名對(duì)arr數(shù)組元素進(jìn)行降序排序,排序后保持?jǐn)?shù)組元素原有的“鍵值對(duì)”對(duì)應(yīng)關(guān)系。
示例:

7. shuffle()函數(shù)
語(yǔ)法:bool shuffle(array$arr)
功能:打亂arr數(shù)組進(jìn)行隨機(jī)排序,為排序后的數(shù)組元素賦予新的鍵名。
示例:

8. array_reverse()函數(shù)
語(yǔ)法:array array_reverse(array$arr[,bool$preserve_keys])
功能:返回一個(gè)和數(shù)組arr元素順序相反的新數(shù)組,如果preserve_keys為true,則保留原來(lái)的鍵名,但是非數(shù)字的鍵則不受這個(gè)設(shè)置的影響,總是會(huì)被保留。
示例:

3.6.5 數(shù)組元素操作函數(shù)
在操作數(shù)組過(guò)程中,經(jīng)常會(huì)遇到在數(shù)組的前面或后面添加或刪除元素的情況,PHP提供了幾個(gè)數(shù)組元素操作的函數(shù),如表3-6所示。
表3-6 數(shù)組元素操作函數(shù)

1. array_push()函數(shù)
語(yǔ)法:int array_push(array$arr,mixed$var [,mixed…])
功能:將一個(gè)或多個(gè)元素var添加到數(shù)組arr的末尾,并返回新數(shù)組元素的個(gè)數(shù)。
示例:

2. array_ pop()函數(shù)
語(yǔ)法:mixed array_pop(array$arr)
功能:彈出并返回arr數(shù)組的最后一個(gè)元素,并將數(shù)組arr的長(zhǎng)度減1。如果arr為空(或者不是數(shù)組)將返回null。
示例:

3. array_unshift()函數(shù)
語(yǔ)法:int array_unshift(array$arr,mixed var [,mixed…])
功能: 在數(shù)組arr開(kāi)頭插入一個(gè)或多個(gè)元素,返回新數(shù)組中元素的個(gè)數(shù)。
示例:

4. array_shift()函數(shù)
語(yǔ)法:mixed array_shift(array$arr)
功能: 移除數(shù)組arr的第一個(gè)元素,返回該元素值,然后將數(shù)組arr其他的元素向前移動(dòng)一位。如果array為空(或者不是數(shù)組),則返回null。
示例:

3.6.6 其他函數(shù)

3.6.6 其他函數(shù)
在實(shí)際開(kāi)發(fā)中,除了上述講解的函數(shù)外,還有一些函數(shù)經(jīng)常使用,例如,從數(shù)組中隨機(jī)取一個(gè)或多個(gè)元素,合并數(shù)組等,在此主要介紹表3-7所示的一些函數(shù)。
表3-7 其他函數(shù)

1. is_array()函數(shù)
語(yǔ)法:bool is_array(mixed$var)
功能: 檢測(cè)變量var是否是數(shù)組。如果var是數(shù)組,則返回true,否則返回false。
示例:

上述代碼,通過(guò)is_array()函數(shù)判斷$arr是否是數(shù)組,當(dāng)執(zhí)行到is_array($arr)時(shí),返回結(jié)果為true,所以輸出“$arr是數(shù)組”。
2. array_merge()函數(shù)
語(yǔ)法:array array_merge(array$arr1,array$arr2[,array…])
功能:將兩個(gè)或多個(gè)數(shù)組合并起來(lái),一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面,返回一個(gè)新的數(shù)組。如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的一個(gè)值將覆蓋前一個(gè)值。如果數(shù)組包含數(shù)字鍵名,后面的值將不會(huì)覆蓋原來(lái)的值,而是附加到數(shù)組的后面。如果只給了一個(gè)數(shù)組并且該數(shù)組是索引數(shù)組,則鍵名會(huì)以連續(xù)方式重新編排索引。
示例:


3. array_rand()函數(shù)
語(yǔ)法:mixed array_rand(array$arr [,int$num])
功能:從數(shù)組arr中隨機(jī)取出一個(gè)或多個(gè)元素。參數(shù)num指明取出的元素個(gè)數(shù),默認(rèn)為1,如果只取出一個(gè)元素,該函數(shù)會(huì)返回一個(gè)隨機(jī)元素的鍵名,否則就返回一個(gè)包含隨機(jī)鍵名的數(shù)組。
示例:

4. range()函數(shù)
語(yǔ)法:array range(mixed$start,mixed$end [,number$step])
功能:創(chuàng)建一個(gè)從start到end范圍的數(shù)組。如果給出了step的值,它將被作為元素之間的步長(zhǎng)。step應(yīng)該為正值,如果未指定,step則默認(rèn)為1。
示例:

- 零基礎(chǔ)學(xué)Visual C++第3版
- 深入理解Django:框架內(nèi)幕與實(shí)現(xiàn)原理
- 編程卓越之道(卷3):軟件工程化
- Visual C++數(shù)字圖像模式識(shí)別技術(shù)詳解
- 看透JavaScript:原理、方法與實(shí)踐
- Python計(jì)算機(jī)視覺(jué)編程
- PhoneGap:Beginner's Guide(Third Edition)
- 51單片機(jī)C語(yǔ)言開(kāi)發(fā)教程
- Getting Started with Nano Server
- OpenCV 3 Blueprints
- Python網(wǎng)絡(luò)爬蟲(chóng)技術(shù)與應(yīng)用
- Swift High Performance
- Python深度學(xué)習(xí)(第2版)
- Effective C++:改善程序與設(shè)計(jì)的55個(gè)具體做法(第三版)中文版(雙色)
- R語(yǔ)言數(shù)據(jù)分析從入門(mén)到實(shí)戰(zhàn)