1.1關於數組操作的函數
1.1.1range(start,end)
創建一個數組,值從start開始,一直到end結束
如果range里面的參數是數字,那么他直接按照數字大小的順序排序,如果里面的參數是一個字符,那么他將按照ascii編碼的順序排序。
1.1.2array_rand()
隨機取出一個數組的下標
array_rand存在第二個參數,默認情況下是1,代表獲取一個數組元素的下標,他的數據類型等同於下標的數據類型,但是如果一次性隨機獲取多個元素的下標,他返回的是一個數組。
雖然他是隨機獲取數組元素的下標,但是獲取后的結果一定是小的下標放在前面而大的下標放在后面。
1.1.3shuffle()
作用:打亂一個數組的排序。
使用shuffle打亂一個數組,不需要重新復制,它會自動將原來的數組的元素順序打亂。
1.1.4is_array()
作用:判斷一個變量是否是數組數據類型。
語法:is_array(變量名),如果是數組,返回一個true,如果不是數組,返回一個false。
1.1.5array_search()
作用:根據一個數組元素的值,去尋找他相對於的下標
語法:array_search(value,$arr[,boolean]) ,返回的是元素值對應的下標
array_search去遍歷數組查找下標,是從左往右進行尋找,當找到第一個符合要求的元素時,直接返回下標,函數結束。
array_search去遍歷數組,區分大小寫
array_search默認情況下,是不區分數據類型的,如果想讓其區分數據類型,將array_search的第三個參數修改為true即可。
1.2關於數組元素操作的函數
1.2.1array_keys()
作用:獲取數組中的所有下標,返回的結果還是一個數組
語法:array_keys($arr)
1.2.2array_values()
作用:獲取數組中的所有值,返回的結果還是一個數組
語法:array_values($arr)
1.2.3array_combine()
作用:將兩個數組合並,第一個數組里元素的值被當成新數組元素的下標,第二個數組里元素的值被當成新數組元素的值。
語法:array_combine($arr1,$arr2)
array_combine去合並兩個數組,兩個數組元素的數量必須是一樣的。
1.2.4in_array()
作用:查找某一個數組元素的值是否存在。
語法:in_array(value,$arr[,boolean])。返回的是一個布爾值,如果存在,返回的是一個true,如果不存在,返回的結果是false。
默認情況下不區分數據類型,如果想區分,將第三個參數修改為true即可。
in_array區分大小寫
1.2.5array_key_exists()
作用:查找數組元素中是否存在某個下標
語法:array_key_exists($key,$arr)
區分大小寫
array_key_exists只有兩個參數,他不區分數據類型
1.2.6isset()
判斷一個變量是否被定義。
思考:isset()和array_key_exists()判斷數組元素有什么區別?
答案:如果一個數組元素的值為null的時候,isset()判斷的結果是false而array_key_exists()判斷的結果是true。
1.2.7implode()
作用:將一個數組拼接成一個字符串。
語法:implode(string,$arr)
如果省略了拼接符,那么,他默認按照空字符串進行拼接
1.2.8explode()
作用:將一個字符串拆分成一個數組。
語法:explode(string,$str[,num])
explode如果有第三個參數,則代表將字符串拆分成幾份,最后一份包含字符傳后面的所有部分。
explode第三個參數如果是一個負數,那么則代表將最后的幾項丟棄
1.3數組的交並差
1.3.1array_merge()
作用:將幾個數組合並,然后生成一個新的數組。
如果合並數組的下標是數字,那么他會無視下標,直接生成一個新的數組,然后下標從0開始重新排序
如果合並數組的下標是字符串,那么他會保留原來的下標,合並后的數組,如果下標出現了沖突,那么后來的值會將原來的值替換。
1.3.2array_diff()
代碼的差集,計算某個數組中其他數組沒有的元素。
語法:array_diff($arr1,$arr2[,$arr3..$arrn])
計算的是第一個參數數組中其他數組沒有的部分
獲得元素中的下標是第一個參數數組元素的下標。
1.3.3array_intersect()
計算數組的交集
語法:array_intersect($arr1,$arr2[,$arr3..$arrn]);
計算的是所有數組中共同擁有的部分,下標仍然是以第一個參數數組的下標為准。
1.4遍歷數組的函數
1.4.1array_map()回調函數
語法:array_map(函數名,$arr)
作用:分別去取出數組里面的每一個元素的值,然后去執行函數。
除了調用php內置的函數以外,我們也可以去手寫函數,然后通過我們自定義函數的函數名,也可以實現一個調用函數的功能
除了書寫函數名的模式以外,我們也可以自己去書寫一個匿名函數,效果是一樣的。
我們也可以一次性去傳遞多個數組,那么第一次會將每個數組第一個元素的值取出,第二次會將每個數組第二個元素的值取出,以此類推
如果array_map中調用的函數為空,那么他將依次取出數組中的元素,然后將其合並成一個新的數組,最終的結果是一個二維數組。
1.4.2array_walk()
作用:依次取出數組元素的下標和值。
語法:array_walk($arr,’函數名’)
array_map可以一次性傳遞多個數組,但是array_walk只能傳遞一個數組。
array_map在工作中比較常見,array_walk出現的可能比較小,因為array_walk的功能完全可以被foreach所取代。
1.5棧和隊列
棧:先進后出,后進先出
隊列:先進先出,后進后出
1.5.1array_push()
作用:往數組的最后插入元素
語法:array_push($arr,$value[,$value2..$valuen])
array_push也可以一次性添加多個元素。
1.5.2array_pop()
作用:刪除數組里最后一個元素
語法:array_pop($arr)
array_pop移除元素以后,返回的結果就是移除元素的值
1.5.3array_shift()
作用:刪除數組里面第一個元素
語法:array_shift($arr)
移出完第一個元素,后面的元素也會順勢往前位移一位,返回的結果也是移除元素的值。
1.5.4array_unshift()
作用:往數組的最前面插入元素
語法:array_unshift($arr,$value[,$value2..$value3])
思考:array_shift()和直接使用unset()去刪除數組里第一個元素,有什么區別?
答案:unset()刪除的是數組元素的值,但是保留下標,但是array_shift()是將元素的下標和值統一移出。
1.6數組的排序
1.6.1sort()
作用:將數組元素的值按照從小到大的順序排序。
語法:sort($arr)
使用sort去排序數組,數組的下標全部舍去,新生成的數組下標按照從0開始,依次遞增。
1.6.2rsort()
作用:將一個數組從大到小進行排序。
語法:rsort($arr)
1.6.3asort()
作用:將一個數組從小到大進行排序,但是會保留原來的下標。
語法:asort($arr)
1.6.4arsort()
作用:將一個數組從大到小進行排序,但是也會保留下標。
語法:arsort($arr)
1.6.5ksort()
作用:將一個數組的下標,從小到大進行排序
語法:ksort($arr)
1.6.6krsort()
作用:將一個數組的下標,從大到小進行排序
語法:krsort($arr)
1.6.7natsort()
作用:自然排序會將字符串當成是一個整體,然后進行從小到大的排序。
語法:natsort()
1.6.8usort()
作用:自定義一個排序。
語法:usort($arr,fn($num1,$num2){})
如果return的是一個大於0的整數,那么,$num1將往后排序
如果return的是一個小於0的整數,那么,$num1將往前排序
如果return的是一個等於0的整數,那么,他保持不變
有些時候,對於一些二維數組,我們用普通排序的方式難以實現,這個時候,我們可以去使用自定義排序。
1.7字符串操作
1.7.1[]
語法:[num]
作用:獲取第num+1個字節
1.7.2strlen()
作用:獲取字符串占用多少字節
語法:strlen($str)
中文下的符號也是占三個字節
1.7.3trim()
作用:去除字符串左右兩邊的空格
語法:trim($str,[char]),返回的結果就是去除空格的字符串。
可選參數,過濾字符也可由charlist參數指定。一般要列出所有希望過濾的字符,也可以使用“..” 列出一個字符范圍。
1.7.4ltrim()
作用:去除字符串左邊的空格
語法:ltrim($str,[char])
1.7.5rtrim()
作用:去除字符串右邊的空格
語法:rtrim($str,[char])
1.7.6strpos()
作用:尋找某個字符首次出現的位置。注意判斷是用全等於false才為失敗。因為下標0會判斷等於false。
語法:strpos($str,char[,num])
如果出現多個符合要求的字符,他只招第一個符合要求字符的位置。
strpos查找字符串是從左往右的順序進行尋找,第三個參數代表從哪一個位置開始去尋找,區分大小寫。
1.7.7strrpos()
作用:從右往左進行尋找,找到第一個符合要求的字符結束
語法:strrpos($str,char[,num])
第三個參數代表搜索結束的位置,如果找不到,返回一個false
1.7.8str_repeat()
作用:將一個字符串重復多少次
語法:str_repeat($str,num)
1.7.9chr()
作用:將一個十進制數字轉換為對應的ASCII編碼
1.7.10ord()
作用:將一個ascii編碼轉換為對應的數字
1.7.11substr()
作用:截取字符串
語法:substr($str,startNum[,截取的長度])
如果省略第三個參數,則直接截取到最后一位
參數的作用
1.7.12strchr()
作用:從某個字符開始截取
語法:strchr($str,char[,boolean])
第三個參數代表strchr截取字符是字符串右邊部分還是左邊部分,默認是false,代表右邊部分,並且保留截取的字符,如果修改為true,則代表截取左邊部分,不保留截取的字符。strstr就是strchr的另一個稱呼。區分大小寫。
1.7.13stristr()
作用:從某個字符開始截取字符串,但是他不區分大小寫。
語法:stristr($str,char[,boolean])
無論是strstr還是stristr,截取字符串都是從左往右進行查找,找到第一個符合要求的字符就開始截取。
1.7.14strrchr()
作用:從某個字符開始截取字符串,但是他是從右往左進行尋找。
語法:strrchr($str,char)
1.7.15str_replace()
作用:替換字符串中的字節
語法:str_replace(替換前字符,替換后的字符,$str)
如果想一次性替換多個字節,將需要替換的字節放在一個數組中
如果想將多個字符全部替換成一個字符,前面用數組,后面不需要使用數組。
替換的順序是先替換第一個,第一個替換完畢以后,才會去繼續替換第二個元素
1.7.16str_split()
作用:將一個字符串拆分成數組。
語法:str_split($arr,num)
str_split()拆分字符串,是以限制字符長度去拆分字符串。
1.7.17str_pad()
作用:給一個字符串填充一個具體的內容。
語法:str_pad($str,length,char)
str_pad存在第四個參數,他的值是一個常量。
STR_PAD_LEFT:向左添加填充物
STR_PAD_RIGHT:向右添加填充物(默認項)
STR_PAD_BOTH:向兩邊添加填充物
1.7.18strtolower()
作用:將字符串轉換為全小寫
1.7.19strtoupper()
作用:將字符串轉換為全大寫
1.7.20nl2br()
作用:將\n轉換為
1.7.21htmlspecialchars()
作用:將特殊字符解析成普通字符
1.7.22urlencode()
給編碼加密。
1.7.23urldecode()
給編碼解密
1.8多字符處理函數
在使用多字符處理函數之前,必須要先打開相應的配置,首先打開php.ini,然后搜索php_mbstring,將注釋去除,重啟apache即可
1.8.1mb_strlen()
返回字符串一共擁有的字符數。
語法:mb_strlen($str,編碼格式)
1.8.2mb_internal_encoding()
如果不加任何參數,直接輸出,代表當前的編碼格式。
如果加上參數,代表修改其字符集編碼。
1.8.3mb_strpos()
獲取某個字符出現的位置。
1.8.4mb_substr()
截取字符串
1.8.5iconv()
作用:設置一個字符串的字符集編碼
語法:iconv(設置前的字符集編碼,設置后的字符集編碼,需要修改的字符串)修改完的結果會生成一個新的字符串。