標籤:元素 隨機 and 衝突 dex false lis 交換 自動
1、數組
數組是一種複合類型,存放在記憶體中的堆區,裡面可以儲存多個不同類型的資料,而且長度預設的是沒有限制!
數組的組成
數組,是由元素(element)組成的,每個元素都是數組的中的一個成員!
元素的名字,叫作下標(index),也叫作鍵(key),元素的值,叫作值(value)
所以,數組中的一個元素也叫作一個“索引值對”(key/value)
建立數組顯式建立
就是利用array顯式的建立:
隱式建立
其實就是利用數組的中括弧文法建立:
其中,鍵名可以預設,系統會自動加上索引下標!
2、數組的指標
在每一個數組的內部,都有一個數組元素的指標(看不見摸不著),該指標負責指向數組內的某個元素,那麼這個被指向的元素,就叫作“當前元素”!
典型的,如果我們定義了一個數組然後什麼都沒做的話,此時數組的指標就指向該數組的第一個元素!
指標相關函數:
key():文法是:key(數組名),作用:擷取該數組當前元素的鍵!current():文法是:current(數組名),作用:擷取該數組當前元素的值!next():文法是:next(數組名),作用:將數組的指標下移一位reset():文法是:reset(數組名),作用:重設數組的指標(將數組的指標重新指向第一個元素)prev():向上移動數組指標,previous(先前的)end():reset是將數組的指標移動到第一個元素,那麼end也是重設指標,不過是重設到最後一個元素!3、數組常用函數each():同時兼備了key、current、next函數的功能,既可以擷取到當前元素的值,也能擷取到當前元素的鍵!
注意each的傳回值:
1), 返回的是一個數組,而且是一個索引和關聯並存的混合數組
2), 在原有數組的當前元素的基礎上,重新建立了一個新的數組,其中原數組元素的值和鍵都是新數組的值,並為其分別建立了索引下標和關聯下標
其中索引的:$each[0]代表原數組當前元素的鍵,$each[1]代表原數組當前元素的值
其中關聯的:$each[‘key’]代表原數組當前元素的鍵,$each[‘value’]代表原數組當前元素的值
list():也是一個系統函數,它可以利用一個索引數組,一次性的為多個變數賦值!while+each+list遍曆:
count():計算並返回數組中的元素的個數或者對象中的屬性的個數!另外,count還有第二個參數,預設為0或false,如果是1或true,則支援遞迴統計(內部數組的值也會統計)range():使用range來定義數組,有三個參數:1)、開始字元或數字,2)、結束的字元或數字3)、步伐:一次跳轉幾個字元或數字array_merge():array_merge() 將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的後面,返回作為結果的數組。如果輸入的數組中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面(重新索引)。即使索引下標沒有衝突,一樣是重新索引。如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引另外,運算子"+"也可以實現數組的合并,規則:無論是索引數組還是關聯陣列,都會直接捨棄後面重複下標的元素!array_rand():這裡的rand是隨機的意思,作用是隨機抽取數組內的幾個元素的鍵!並返回一個索引數組!需要兩個參數:第一個是一個數組名,第二個抽取的個數shuffle():作用是打亂一個數組,而且是直接在原數組上進行打亂!而且會重建索引下標!max()和min():還可以獲得數組內的最大值和最小值!array_keys():擷取所有元素的鍵,返回一個索引數組!array_values():擷取所有元素的值,返回一個索引數組! array_combine():有兩個參數,都是數組,拿第一個數組的值作為新數組的鍵,第二個數組的值作為新數組的值重新組合成一個新數組!array_flip():交換數組的鍵和值!in_array():判斷一個資料是否是某個數組裡面元素的值!返回一個布爾值!需要兩個參數:第一個是某個具體的資料,第二個是一個數組名array_key_exists():判斷一個數組內是否存在某個鍵,也返回一個布爾值,也需要兩個參數:第一個是具體的資料,第二個是一個數組名array_search():
作用是搜尋數組內的某個元素的值,並返回其下標值!至少需要兩個參數:第一個參數是一個具體的值,第二個參數是一個數組名array_chunk():將一個數組分割成多個數組,其中每個數組的單元數目由 第二個參數 決定。最後一個數組的單元數目可能會少於 第二個參數 個。implode():
作用是將一個數組元素的所有的值,利用一個指定的分隔字元串連成一個字串!需要兩個參數:第一個是分割符,這裡可以省略,如果省略,那就是沒有分隔字元,第二個是一個數組名;explode():
作用是將一個字串,利用其中的分隔字元,將其分割成多個部分,形成一個數組!需要兩個參數:第一個參數是一個分隔字元,第二個參數是一個字串!extract():將數組中的每一個元素都變成一個變數,其中變數的名字就是數組元素的鍵,變數的值就是數組元素的值!常見的是,可以將一些資料放到一個數組內,然後作為函數的參數傳遞到一個函數內,然後在函數內把這個數組extract掉,從而產生了需要的變數!compact():利用多個變數,形成一個數組,很顯然,數組元素的鍵就是變數的名字,數組元素的值就是變數的值!使用情境:如果一個函數的傳回值有很多個,可以把所有的傳回值放到一個數組裡面,然後返回這個數組就行了!array_map():有兩個參數,第一個是一個函數,第二個是一個數組或是一個數組列表,使後面的數組每一個單元都經過第一個函數的處理,返回處理過後的數組
array_push()
:將一個或多個資料壓入數組的尾部!
array_pop()
:將數組的最後一個資料彈出
array_unshift()
:從數組的前面加入資料
array_shift()
:從數組的前面彈出資料sort():對數組中的元素進行升序排序,也就是從低到高!排序之後,會丟失原數組的鍵,重建一個索引數組!asort():也是升序排序,只是排序後會保留以前的索引值對!rsort():這裡的r就是reverse的意思!對數組元素的值進行降序排序,也就是從高到低:排序之後會重建一個索引數組!arsort():也是降序排序,只是會保留以前的索引值對!
php基礎文法4