摘要:和只從數組的頭或尾刪除一個元素。因此解讀時將這兩個函數一并講了。函數語法函數彈出并返回數組的最后一個單元,并將數組長度減一。將數組開頭的單元移出數組并作為結果返回,將長度減一并將所有數字鍵值改為從開始計數,文字鍵值不變。
上篇文章介紹了PHP添加元素到數組的函數,那么當然有從數組中刪除元素。array_pop和array_shift只從數組的頭或尾刪除一個元素。經過閱讀源碼,發現這兩個函數的實現都是調用了同一個函數--_phpi_pop來實現從數組中刪除一個數組元素的功能。因此解讀時將這兩個函數一并講了。
我在github有對PHP源碼更詳細的注解。感興趣的可以圍觀一下,給個star。PHP5.4源碼注解。可以通過commit記錄查看已添加的注解。
函數語法 array_popmixed array_pop ( array $&array )
array_pop函數彈出并返回數組的最后一個單元,并將數組長度減一。如果array為空則返回NULL。
array_shiftmixed array_shift ( array &$array )
將數組開頭的單元移出數組并作為結果返回,將array長度減一并將所有數字鍵值改為從0開始計數,文字鍵值不變。
代碼示例下面代碼展示了array_pop和array_shift的使用方法
$arr = array(‘apple’, ‘banana’, ‘cat’); $val = array_pop($arr); // val == cat $arr = array(‘apple’, ‘banana’, ‘cat’); $val = array_shift($arr); // val == apple執行步驟
兩個函數都是調用了_phpi_pop函數,區別不同的是調用_phpi_pop函數時傳遞的第二個參數off_the_end的不同,如果off_the_end是1,則是array_pop,否則是array_shift。下面是_phpi_pop這個函數執行的詳細步驟:
1、如果數組長度為0,則返回NULL。
2、根據off_the_end參數移動內部指針指向需要刪除的數組元素。
3、設置返回值為第二步指針指向的元素。
4、從數組中移出第一個或最后一個值并將長度減一。
5、如果是array_shift操作,則需要重置數組下標,將數字下標改為從0開始計數,文字鍵值不變;否則只需要修改下一個數字索引的位置。
6、重置array指針。
函數執行的過程可以用下面的流程圖描述:
下面兩個圖展示了根據上面的示例代碼執行時數組元素和內部指針的變化的效果圖:
array_pop
array_shift
array_pop和array_shift調用此函數執行的步驟都大同小異,不同之處在于:
1、在移動指針時,前者移動到數組尾部,后者移動指針到數組第一個單元。
2、刪除操作完成后,前者只需修改下一個數字索引的位置,而后者需要重置數組下標。
小結如果兩個函數實現的步驟差不多,可以用一個參數區別執行的是哪一個函數以減少程序中重復的代碼。
原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。
如果本文對你有幫助,請點下推薦吧,謝謝^_^
最后再安利一下,我在github有對PHP源碼更詳細的注解。感興趣的可以圍觀一下,給個star。PHP5.4源碼注解。可以通過commit記錄查看已添加的注解。
更多源碼文章,歡迎訪問個人主頁繼續查看:hoohack
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21614.html
摘要:下面來看一下,有哪些數據結構屬于線性表吧棧特性先進后出只有唯一的一個出入口介紹棧又名堆棧,它是一種運算受限的線性表。 原文是在我自己博客中,小伙伴也可以點閱讀原文進行跳轉查看,還有好聽的背景音樂噢背景音樂已取消~ 2333333 線性表 什么是線性表?就是一種連續或間斷存儲的數組,這里的連續和間斷是針對物理內存空間中線性表元素之間是否連續,其中連續數組對應內置數組的實現方式,間斷數組對...
摘要:不論你想要成熟的面向對象的程序設計,還是程序式或函數式編程,都可以做到。但我們不禁要問,擅長函數式編程嗎本文系國內管理平臺工程師編譯整理。在函數式編程中,目標之一是減輕副作用。 許多通用程序設計語言試圖兼容大多數編程范式,PHP 就屬于其中之一。不論你想要成熟的面向對象的程序設計,還是程序式或函數式編程,PHP 都可以做到。但我們不禁要問,PHP 擅長函數式編程嗎?本文系國內 ITOM...
摘要:必選規定被搜索的數組可選如果設置為,則在數組中檢查給定值的類型,默認是搜索數組中是否存在指定的值。回調函數接受的參數數目應該和傳遞給函數的數組數目一致。 開發過程中經常會使用到數組函數,故特地總結出來,自己熟悉,同時供大家參考!(實例部分會抽空盡快完成) 一、目錄 array_merge(); 合并數組 array_keys(); array_filter(); in_array()...
摘要:概述我們知道,在編程語言中,數組的使用頻率是很高的,幾乎每個腳本都會使用到。循環缺點遍歷完成之后,不能對數組進行第二次遍歷數組內部指針指向了最后一個元素。 概述 我們知道,在 PHP 編程語言中,數組的使用頻率是很高的,幾乎每個腳本都會使用到。 PHP 自帶了大量的、優秀的操作數組的函數以供我們使用,本文就對這些數組函數的使用做一些分類和總結,方便大家以后查閱。 創建 1. range...
摘要:語法數組刪除數組的最后一項語法數組在數組的最末添加一項語法數組刪除數組的首項語法數組在數組的首部添加一項案例分析 1:數組的指針操作: 語法:current(數組) 當前指針指向的單元值(默認是第零個)語法 next(數組) 當前指針往下移動一幀語法 prev(數組) 當前指針往前移動一個指針語法 end(array) 將當前指針移動到最后一項語法 ...
閱讀 1837·2021-11-23 09:51
閱讀 1286·2021-11-18 10:02
閱讀 970·2021-10-25 09:44
閱讀 2103·2019-08-26 18:36
閱讀 1628·2019-08-26 12:17
閱讀 1152·2019-08-26 11:59
閱讀 2750·2019-08-23 15:56
閱讀 3359·2019-08-23 15:05