PHP重要數(shù)據(jù)結(jié)構(gòu)——數(shù)組

之前研究了一下python的幾種重要的數(shù)組,今天來溫習(xí)一下PHP的數(shù)組

數(shù)組的創(chuàng)建

  1. 使用array()函數(shù)創(chuàng)建

    $A = array();
    $A = array('a','b','c');
    $A = array(
     'first' => 'a',
     'second' => 'b',
     'third' => 'c'
    )
    
  2. 使用中括號[ ]創(chuàng)建(php5.4及之后版本支持潦嘶,其實大家現(xiàn)在學(xué)都直接用php7了)

    $A = [];
    $A = ['a','b','c'];
    $A = [
     'first' => 'a',
     'second' => 'b',
     'third' => 'c'
    ]
    

兩種索引方式讀取或更改值

  1. 數(shù)字索引訪問(默認(rèn)索引

    數(shù)字索引從0開始

    不支持負(fù)數(shù)倒序索引,越界訪問得到NULL(空)

    echo $A[1]
    $A[1] = 'apple'
    
  2. key值訪問(自定義索引殖告,可以是任意整數(shù)溜徙,也可以字符串

    不存在的key值索引訪問內(nèi)容時得到NULL, 賦值時會以該索引新增一個元素

    echo $A['first'];
    $A['first'] = 'apple';
    $A[-5] = 'new_element';
    

    ps:php的數(shù)組可以混合使用數(shù)字或字符串作為索引枪萄,使用字符串?dāng)?shù)字和整數(shù)沒有區(qū)別伶选。并且史飞,沒有主動為元素定義索引時,默認(rèn)為當(dāng)前數(shù)組中最大的非負(fù)整數(shù)索引+1(沒有非負(fù)整數(shù)索引時仰税,則為0)祸憋。使用foreach 數(shù)組 AS 代表鍵=>代表值可以遍歷數(shù)組,當(dāng)然肖卧,AS后邊可以只有代表值蚯窥。

增加或刪除元素

  1. 增加元素

    1. 直接賦值

      $A[] = 'new_element';     //向數(shù)組A的末尾添加一個元素'new_element'(其索引為默認(rèn))
      $A['new_key'] = 'new_element';        //帶有新索引的直接賦值
      
    2. array_push(array,new_element)入棧/隊

      array_push($A塞帐,'new_element1','new_element2')  //向數(shù)組$A末尾添加一個或多個元素
      
  1. array_pad(數(shù)組拦赠,返回的數(shù)組長度,原數(shù)組長度不足時填充的內(nèi)容)

    該函數(shù)不算真正意義上的增加元素葵姥,它不會改變原數(shù)組的內(nèi)容荷鼠,只是以原數(shù)組為基礎(chǔ)構(gòu)建指定長度的數(shù)組,當(dāng)原數(shù)組長度不足時用指定的參數(shù)補(bǔ)齊榔幸,當(dāng)指定的長度小于原數(shù)組時允乐,不會截短原數(shù)組。(指定的長度為負(fù)數(shù)時削咆,新元素被放到原數(shù)組的前面牍疏,為正數(shù)時放到后面,取絕對值作為長度)

  2. 刪除元素

    1. array_shift(array)出隊

      $head_element = array_shift($A);  //從數(shù)組$A頭部移除一個元素并且返回
      
    2. array_pop(array)出棧

      $rear_element = array_pop($A);        //從數(shù)組$A尾部移除一個元素并返回
      
    3. 使用unset()刪除拨齐,只能刪除特定的一個元素鳞陨,刪除后其他元素不會有任何改變

    4. 使用array_splice()刪除,刪除后更改所有以整數(shù)(包括字符串整數(shù))為索引元素的索引(按照默認(rèn)索引方式為這些元素重新索引)瞻惋,該函數(shù)會返回被刪除的元素構(gòu)成的數(shù)組(被刪除的元素為字符串索引保留原索引厦滤,否則給予默認(rèn)索引)。如果需要歼狼,還可以用指定元素替換所有被刪除的元素(原索引不保留掏导,替換進(jìn)去的元素給予默認(rèn)索引)例子如下:

      array_splice(數(shù)組 , 刪除的起始位置n , 刪除的個數(shù) ,[用于替換的元素])    //  第四個參數(shù)可選
      起始位置n不是索引號羽峰,而是從第n+1個(包括)元素開始刪除
      
      $A = ['2'=>'a','first'=>'b','7'=>'c','d'];
      print_r(array_splice($A,1,1));
      print_r($A);
      結(jié)果:
      Array ( [first] => b )
      Array ( [0] => a [1] => c [2] => d )
      

      還有一個函數(shù)array_slice()趟咆,使用方法同array_splice添瓷,但該函數(shù)不會刪除原數(shù)組中的值,只是取出部分值構(gòu)成新的數(shù)組忍啸,第四個參數(shù)是選擇新數(shù)組是否保留原索引 (默認(rèn)重置索引)

      array_slice(數(shù)組 , 提取的起始位置n , 提取的個數(shù) ,[是否保留原索引]) //  第四個參數(shù)可選
      $A = ['2'=>'a','first'=>'b','7'=>'c','d'];
      print_r(array_splice($A,0,3));
      print_r($A);
      
      結(jié)果:
      Array ( [0] => a [first] => b [1] => c )  
                        //若第四個參數(shù)為true履植,則結(jié)果Array ( [2] => a [first] => b [7] => c )
      Array ( [2] => a [first] => b [7] => c [8] => d ) //  原數(shù)組不被刪除
      

總結(jié)

? 一般使用array_shift(), array_pop()和$A[] = (直接賦值)的方法就能完成隊列和棧結(jié)構(gòu)计雌,不使用array_push的原因是直接賦值效率更高,在一次需要插入多個值時才考慮array_push玫霎。另外像php這種弱類型語言凿滤,數(shù)組的元素可以是任何而類型(包括數(shù)組),靈活性很強(qiáng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庶近,一起剝皮案震驚了整個濱河市翁脆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌鼻种,老刑警劉巖反番,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叉钥,居然都是意外死亡罢缸,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門投队,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枫疆,“玉大人,你說我怎么就攤上這事敷鸦∠⑿ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵扒披,是天一觀的道長值依。 經(jīng)常有香客問我,道長碟案,這世上最難降的妖魔是什么鳞滨? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蟆淀,結(jié)果婚禮上拯啦,老公的妹妹穿的比我還像新娘。我一直安慰自己熔任,他們只是感情好褒链,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疑苔,像睡著了一般甫匹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天兵迅,我揣著相機(jī)與錄音抢韭,去河邊找鬼。 笑死恍箭,一個胖子當(dāng)著我的面吹牛刻恭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扯夭,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鳍贾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了交洗?” 一聲冷哼從身側(cè)響起骑科,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎构拳,沒想到半個月后咆爽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡置森,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年伍掀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暇藏。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜜笤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盐碱,到底是詐尸還是另有隱情把兔,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布瓮顽,位于F島的核電站县好,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏暖混。R本人自食惡果不足惜缕贡,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拣播。 院中可真熱鬧晾咪,春花似錦、人聲如沸贮配。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泪勒。三九已至昼蛀,卻和暖如春宴猾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叼旋。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工仇哆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人夫植。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓讹剔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親偷崩。 傳聞我的和親對象是個殘疾皇子辟拷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Javascript有很多數(shù)組的方法撞羽,有的人有W3C的API阐斜,還可以去MDN上去找,但是我覺得API上說的不全诀紊,M...
    頑皮的雪狐七七閱讀 4,083評論 0 6
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗谒出。 張土汪:刷leetcod...
    土汪閱讀 12,745評論 0 33
  • NumPy是Python中關(guān)于科學(xué)計算的一個類庫,在這里簡單介紹一下邻奠。 來源:https://docs.scipy...
    灰太狼_black閱讀 1,228評論 0 5
  • 先決條件 在閱讀這個教程之前笤喳,你多少需要知道點python。如果你想從新回憶下碌宴,請看看Python Tutoria...
    舒map閱讀 2,580評論 1 13
  • 曾靜梓坐在會議室里的主位上杀狡,手拿著筆慢悠悠地轉(zhuǎn)著,腦海里一直浮現(xiàn)著語瑜的模樣贰镣,一會穿著睡衣呜象,一會咬著嘴唇,一會望著...
    小小七閱讀 287評論 2 3