PHP數組和字串函數

來源:互聯網
上載者:User

標籤:sci   merge   url   end   大小   定義函數   lsp   整數   區別   

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)

如果省略了拼接符,那麼,他預設按照Null 字元串進行拼接

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(設定前的字元集編碼,設定後的字元集編碼,需要修改的字串)修改完的結果會產生一個新的字串。

PHP數組和字串函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.