您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)php常用經(jīng)典函數(shù)之?dāng)?shù)組、字符串、棧、隊(duì)列、排序的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
具體如下:
range(start,end)
創(chuàng)建一個(gè)數(shù)組,值從start開始,一直到end結(jié)束
如果range里面的參數(shù)是數(shù)字,那么他直接按照數(shù)字大小的順序排序,如果里面的參數(shù)是一個(gè)字符,那么他將按照ascii編碼的順序排序。
array_merge()
作用:將幾個(gè)數(shù)組,然后生成一個(gè)新的數(shù)組。
如果合并數(shù)組的下標(biāo)是數(shù)字,那么他會(huì)無視下標(biāo),直接生成一個(gè)新的數(shù)組,然后下標(biāo)從0開始重新排序
如果合并數(shù)組的下標(biāo)是字符串,那么他會(huì)保留原來的下標(biāo),合并后的數(shù)組,如果下標(biāo)出現(xiàn)了沖突,那么后來的值會(huì)將原來的值替換。
array_combine()
作用: 將兩個(gè)數(shù)組合并,第一個(gè)數(shù)組里元素的值被當(dāng)成新數(shù)組元素的下標(biāo),第二個(gè)數(shù)組里元素的值被當(dāng)成新數(shù)組元素的值。
語法: array_combine($arr1,$arr2)
array_combine去合并兩個(gè)數(shù)組,兩個(gè)數(shù)組元素的數(shù)量必須是一樣的。
array_rand()
隨機(jī)取出一個(gè)數(shù)組的下標(biāo)
array_rand存在第二個(gè)參數(shù),默認(rèn)情況下是1,代表獲取一個(gè)數(shù)組元素的下標(biāo),他的數(shù)據(jù)類型等同于下標(biāo)的數(shù)據(jù)類型,但是如果一次性隨機(jī)獲取多個(gè)元素的下標(biāo),他返回的是一個(gè)數(shù)組。
雖然他是隨機(jī)獲取數(shù)組元素的下標(biāo),但是獲取后的結(jié)果一定是小的下標(biāo)放在前面而大的下標(biāo)放在后面。
shuffle()
作用: 打亂一個(gè)數(shù)組的排序。
使用shuffle打亂一個(gè)數(shù)組,不需要重新復(fù)制,它會(huì)自動(dòng)將原來的數(shù)組的元素順序打亂。
is_array()
作用: 判斷一個(gè)變量是否是數(shù)組數(shù)據(jù)類型。
語法: is_array(變量名),如果是數(shù)組,返回一個(gè)true,如果不是數(shù)組,返回一個(gè)false。
array_search()
作用: 根據(jù)一個(gè)數(shù)組元素的值,去尋找他相對(duì)于的下標(biāo)
語法: array_search(value,$arr[,boolean]) ,返回的是元素值對(duì)應(yīng)的下標(biāo)
array_search去遍歷數(shù)組查找下標(biāo),是從左往右進(jìn)行尋找,當(dāng)找到第一個(gè)符合要求的元素時(shí),直接返回下標(biāo),函數(shù)結(jié)束。
array_search去遍歷數(shù)組,區(qū)分大小寫
array_search
默認(rèn)情況下,是不區(qū)分?jǐn)?shù)據(jù)類型的,如果想讓其區(qū)分?jǐn)?shù)據(jù)類型,將array_search
的第三個(gè)參數(shù)修改為true即可。
array_keys()
作用: 獲取數(shù)組中的所有下標(biāo),返回的結(jié)果還是一個(gè)數(shù)組
語法: array_keys($arr)
array_values()
作用: 獲取數(shù)組中的所有值,返回的結(jié)果還是一個(gè)數(shù)組
語法: array_values($arr)
in_array()
作用 : 查找某一個(gè)數(shù)組元素的值是否存在。
語法 :in_array(value,$arr[,boolean])
。返回的是一個(gè)布爾值,如果存在,返回的是一個(gè)true,如果不存在,返回的結(jié)果是false。
默認(rèn)情況下不區(qū)分?jǐn)?shù)據(jù)類型,如果想?yún)^(qū)分,將第三個(gè)參數(shù)修改為true即可。
in_array區(qū)分大小寫
array_key_exists()
作用: 查找數(shù)組元素中是否存在某個(gè)下標(biāo)
語法: array_key_exists($key,$arr)
區(qū)分大小寫
array_key_exists
只有兩個(gè)參數(shù),他不區(qū)分?jǐn)?shù)據(jù)類型
isset()
判斷一個(gè)變量是否被定義。
思考: isset()和array_key_exists()
判斷數(shù)組元素有什么區(qū)別?
答案: 如果一個(gè)數(shù)組元素的值為null的時(shí)候,isset()判斷的結(jié)果是false而array_key_exists(
)判斷的結(jié)果是true。
implode()
作用 : 將一個(gè)數(shù)組拼接成一個(gè)字符串。
語法 : implode(string,$arr)
如果省略了拼接符,那么,他默認(rèn)按照空字符串進(jìn)行拼接
explode()
作用: 將一個(gè)字符串拆分成一個(gè)數(shù)組。
語法: explode(string,$str[,num])
explode如果有第三個(gè)參數(shù),則代表將字符串拆分成幾份,最后一份包含字符傳后面的所有部分。
explode第三個(gè)參數(shù)如果是一個(gè)負(fù)數(shù),那么則代表將最后的幾項(xiàng)丟棄
array_merge()
參見上面代碼。就是將幾個(gè)數(shù)組合并成一個(gè)新數(shù)組
array_diff()
代碼的差級(jí),計(jì)算某個(gè)數(shù)組中其他數(shù)組沒有的元素。
語法:array_diff($arr1,$arr2[,$arr3..$arrn])
計(jì)算的是第一個(gè)參數(shù)數(shù)組中其他數(shù)組沒有的部分
獲得元素中的下標(biāo)是第一個(gè)參數(shù)數(shù)組元素的下標(biāo)
array_intersect()
計(jì)算數(shù)組的交集
語法 :array_intersect($arr1,$arr2[,$arr3..$arrn]);
計(jì)算的是所有數(shù)組中共同擁有的部分,下標(biāo)仍然是以第一個(gè)參數(shù)數(shù)組的下標(biāo)為準(zhǔn)。
array_map()
語法: array_map(函數(shù)名,$arr)
作用: 分別去取出數(shù)組里面的每一個(gè)元素的值,然后去執(zhí)行函數(shù)。
除了調(diào)用php內(nèi)置的函數(shù)以外,我們也可以去手寫函數(shù),然后通過我們自定義函數(shù)的函數(shù)名,也可以實(shí)現(xiàn)一個(gè)調(diào)用函數(shù)的功能
除了書寫函數(shù)名的模式以外,我們也可以自己去書寫一個(gè)匿名函數(shù),效果是一樣的。
我們也可以一次性去傳遞多個(gè)數(shù)組,那么第一次會(huì)將每個(gè)數(shù)組第一個(gè)元素的值取出,第二次會(huì)將每個(gè)數(shù)組第二個(gè)元素的值取出,以此類推
如果array_map中調(diào)用的函數(shù)為空,那么他將依次取出數(shù)組中的元素,然后將其合并成一個(gè)新的數(shù)組,最終的結(jié)果是一個(gè)二維數(shù)組。
array_walk()
作用 : 依次取出數(shù)組元素的下標(biāo)和值。
語法 :array_walk($arr,'函數(shù)名')
array_map
可以一次性傳遞多個(gè)數(shù)組,但是array_walk
只能傳遞一個(gè)數(shù)組。
array_map
在工作中比較常見,array_walk
出現(xiàn)的可能比較小,因?yàn)?code>array_walk的功能完全可以被foreach所取代。
棧:先進(jìn)后出,后進(jìn)先出
隊(duì)列:先進(jìn)先出,后進(jìn)后出
array_push()
作用:往數(shù)組的最后插入元素
語法:array_push($arr,$value[,$value2..$valuen])
array_push
也可以一次性添加多個(gè)元素
array_pop()
作用:刪除數(shù)組里最后一個(gè)元素
語法:array_pop($arr)
array_pop移除元素以后,返回的結(jié)果就是移除元素的值
array_shift()
作用 : 刪除數(shù)組里面第一個(gè)元素
語法 : array_shift($arr)
移出完第一個(gè)元素,后面的元素也會(huì)順勢往前位移一位,返回的結(jié)果也是移除元素的值。
思考 : array_shift()和直接使用unset()去刪除數(shù)組里第一個(gè)元素,有什么區(qū)別?
答案 : unset()刪除的是數(shù)組元素的值,但是保留下標(biāo),但是array_shift()是將元素的下標(biāo)和值統(tǒng)一移出。
array_unshift()
作用:往數(shù)組的最前面插入元素
語法:array_unshift($arr,$value[,$value2..$value3])
sort()
作用 : 將數(shù)組元素的值按照從小到大的順序排序。
語法 :sort($arr)
使用sort去排序數(shù)組,數(shù)組的下標(biāo)全部舍去,新生成的數(shù)組下標(biāo)按照從0開始,依次遞增
rsort()
作用 : 將一個(gè)數(shù)組從大到小進(jìn)行排序。
語法 :rsort($arr)
asort()
作用 : 將一個(gè)數(shù)組從小到大進(jìn)行排序,但是會(huì)保留原來的下標(biāo)。
語法 : asort($arr)
arsort()
作用 : 將一個(gè)數(shù)組從大到小進(jìn)行排序,但是也會(huì)保留下標(biāo)。
語法 : arsort($arr)
ksort()
作用 : 將一個(gè)數(shù)組的下標(biāo),從小到大進(jìn)行排序
語法 : ksort($arr)
krsort()
作用 : 將一個(gè)數(shù)組的下標(biāo),從大到小進(jìn)行排序
語法 :krsort($arr)
natsort()
:自然排序會(huì)將字符串當(dāng)成是一個(gè)整體,然后進(jìn)行從小到大的排序。
語法 : natsort()
usort()
作用 : 自定義一個(gè)排序。
語法 : usort($arr,fn($num1,$num2){})
如果return的是一個(gè)大于0的整數(shù),那么,他將往后排序
如果return 的是一個(gè)小于0的整數(shù),那么,他將往前排序
如果return的是一個(gè)等于0的整數(shù),那么,他保持不變
有些時(shí)候,對(duì)于一些二維數(shù)組,我們用普通排序的方式難以實(shí)現(xiàn),這個(gè)時(shí)候,我們可以去使用自定義排序。
strpos()
作用 : 尋找某個(gè)字符首次出現(xiàn)的位置。
語法 :strpos($str,char[,num])
如果出現(xiàn)多個(gè)符合要求的字符,他只招第一個(gè)符合要求字符的位置。
strpos查找字符串是從左往右的順序進(jìn)行尋找,第三個(gè)參數(shù)代表從哪一個(gè)位置開始去尋找,區(qū)分大小寫。
strrpos()
作用 : 從右往左進(jìn)行尋找,找到第一個(gè)符合要求的字符結(jié)束
語法 :strrpos($str,char[,num])
第三個(gè)參數(shù)代表搜索結(jié)束的位置,如果找不到,返回一個(gè)false
strlen()
作用 : 獲取字符串占用多少字節(jié)
語法 : strlen($str)
中文下的符號(hào)也是占三個(gè)字節(jié)
trim()
作用 : 去除字符串左右兩邊的空格,第二個(gè)參數(shù)可選希望過濾的字符
語法 :trim($str)
,返回的結(jié)果就是去除空格的字符串。
$a='hello world'; $b='hld'; $rel=trim($a,$b); echo $rel;//ello wor
ltrim()
作用 : 去除字符串左邊的空格,第二個(gè)參數(shù)去除左邊的字符
語法 : ltrim($str)
$a="hello world"; $b="hed"; $rel=ltrim($a,$b); echo $rel;//llo world
rtrim()
作用 : 去除字符串右邊的空格,第二個(gè)參數(shù)去除右邊的字符
語法 : rtrim($str)
$a="hello world"; $b="hed"; $rel=rtrim($a,$b); echo $rel;//hello worl
str_pad()
作用 : 給一個(gè)字符串填充一個(gè)具體的內(nèi)容。
語法 : str_pad($str,length,char)
str_pad存在第四個(gè)參數(shù),他的值是一個(gè)常量。 STR_PAD_LEFT
: 向左添加填充物 STR_PAD_RIGHT
: 向右添加填充物(默認(rèn)項(xiàng)) STR_PAD_BOTH
: 向兩邊添加填充物
str_repeat()
作用 : 將一個(gè)字符串重復(fù)多少次
語法 :str_repeat($str,num)
chr()
作用 :將一個(gè)十進(jìn)制數(shù)字轉(zhuǎn)換為對(duì)應(yīng)的ASCII編碼
ord()
作用 : 將一個(gè)ascii編碼轉(zhuǎn)換為對(duì)應(yīng)的數(shù)字
substr()
作用 : 截取字符串
語法 : substr($str,startNum[,截取的長度])
如果省略第三個(gè)參數(shù),則直接截取到最后一位
參數(shù)的作用
strchr()
作用 : 從某個(gè)字符開始截取
語法 : strchr($str,char[,boolean])
第三個(gè)參數(shù)代表strchr截取字符是字符串右邊部分還是左邊部分,默認(rèn)是false,代表右邊部分,并且保留截取的字符,如果修改為true,則代表截取左邊部分,不保留截取的字符。strstr就是strchr的另一個(gè)稱呼。區(qū)分大小寫。
str_replace()
作用 : 替換字符串中的字節(jié)
語法 :str_replace(替換前字符,替換后的字符,$str)
如果想一次性替換多個(gè)字節(jié),將需要替換的字節(jié)放在一個(gè)數(shù)組中
如果想將多個(gè)字符全部替換成一個(gè)字符,前面用數(shù)組,后面不需要使用數(shù)組。
替換的順序是先替換第一個(gè),第一個(gè)替換完畢以后,才會(huì)去繼續(xù)替換第二個(gè)元素
str_split()
作用 : 將一個(gè)字符串拆分成數(shù)組。
語法 : str_split($arr,num)
str_split()拆分字符串,是以限制字符長度去拆分字符串
explode()
作用: 將一個(gè)字符串拆分成一個(gè)數(shù)組。
語法: explode(string,$str[,num])
explode如果有第三個(gè)參數(shù),則代表將字符串拆分成幾份,最后一份包含字符傳后面的所有部分。
explode第三個(gè)參數(shù)如果是一個(gè)負(fù)數(shù),那么則代表將最后的幾項(xiàng)丟棄
strtolower()
作用 : 將字符串轉(zhuǎn)換為全小寫
strtoupper()
作用 : 將字符串轉(zhuǎn)換為全大寫
nl2br()
作用 : 將\n
轉(zhuǎn)換為<br>
htmlspecialchars()
作用 : 將特殊字符解析成普通字符
urlencode()
給編碼加密
urldecode()
給編碼解密
在使用多字符處理函數(shù)之前,必須要先打開相應(yīng)的配置,首先打開php.ini,然后搜索php_mbstring
,將注釋去除,重啟apache即可
mb_strlen()
返回字符串一共擁有的字符數(shù)。
語法 : mb_strlen($str,編碼格式)
mb_internal_encoding()
如果不加任何參數(shù),直接輸出,代表當(dāng)前的編碼格式。
如果加上參數(shù),代表修改其字符集編碼。
mb_strpos()
獲取某個(gè)字符出現(xiàn)的位置
mb_substr()
截取字符串
iconv()
作用 : 設(shè)置一個(gè)字符串的字符集編碼
語法 : iconv(設(shè)置前的字符集編碼,設(shè)置后的字符集編碼,需要修改的字符串) 修改完的結(jié)果會(huì)生成一個(gè)新的字符串。
gmstrftime()
返回:根據(jù)區(qū)域設(shè)置格式化 GMT/UTC 時(shí)間/日期
語法: string gmstrftime ( string $format [, int $timestamp ] )
和 strftime() 的行為相同,參見strftime()
參數(shù)$format請(qǐng)參考手冊(cè),查strftime()函數(shù)下面有介紹很長
strftime()
返回: 根據(jù)指定的 timestamp 或未給出 timestamp 是使用當(dāng)前本地時(shí)間, 返回 format 格式化的字符。 月份、星期名和其他與語言相關(guān)的字符串遵守 setlocale() 設(shè)置的當(dāng)前區(qū)域設(shè)置。
語法: string strftime ( string $format [, int $timestamp = time() ] )
參數(shù)$format
請(qǐng)參考手冊(cè),查strftime()函數(shù)下面有介紹很長
timestamp:可選的 timestamp 參數(shù)是一個(gè) integer 的 Unix 時(shí)間戳,如未指定,參數(shù)值默認(rèn)為當(dāng)前本地時(shí)間。也就是說,其值默認(rèn)為 time() 的返回值。
strtotime()
將處理過的時(shí)間轉(zhuǎn)為時(shí)間戳
例:輸出昨天時(shí)間
echo "昨天:",date("Y-m-d",strtotime("-1 day")), "<br>";
其他應(yīng)用:
echo strtotime('2012-12-7'); //結(jié)果:1354838400
關(guān)于“php常用經(jīng)典函數(shù)之?dāng)?shù)組、字符串、棧、隊(duì)列、排序的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。