国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

淺談PHP源碼八:關于array_pop, array_shift的介紹

2020-03-22 19:26:32
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于淺談PHP源碼八:關于array_pop, array_shift的介紹,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

要過年了,要放假了,一些事情需要收尾了,一些人也準備回家了,
今年第一次沒有回家。。。。。

貌似也有一個星期沒有看相關的源碼了,是不是上進心沒有了?
看樣子不能因為某些原因放松對自己的要求,又買了兩本書,上個月買的書才看完了一本,要加油了!。。

貌似說了一些廢話。。。

在standard/array.c中我們可以找到 array_pop, array_shift這2個函數的C實現

mixed array_pop ( array array )

array_pop() 彈出并返回 array 數組的最后一個單元,并將數組 array 的長度減一。如果 array 為空(或者不是數組)將返回 NULL

注意: 使用本函數后會重置(reset())數組指針

mixed array_shift ( array array )

array_shift() 將 array 的第一個單元移出并作為結果返回,將 array 的長度減一并將所有其它單元向前移動一位。所有的數字鍵名將改為從零開始計數,文字鍵名將不變。如果 array 為空(或者不是數組),則返回 NULL。

注意: 使用本函數后會重置(reset())數組指針

這兩個函數在實現上都是使用的

 /* {{{ proto mixed array_pop(array stack) Pops an element off the end of the array */PHP_FUNCTION(array_pop){ _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);}/* }}} */ /* {{{ proto mixed array_shift(array stack) Pops an element off the beginning of the array */PHP_FUNCTION(array_shift){ _phpi_pop(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);}

程序首先判斷輸入,然后判斷數組中是否有元素,如果數組為空直接返回,
如果是array_pop:
== zend_hash_internal_pointer_end
== zend_hash_internal_pointer_end_ex(ht, NULL)
此時直接返回hashtable中雙向鏈表的最后一個元素 ht- pInternalPointer = ht- pListTail;

如果是array_shift:
== zend_hash_internal_pointer_reset(Z_ARRVAL_PP(stack));
== zend_hash_internal_pointer_reset_ex(ht, NULL)
此時直接返回hashtable中雙向鏈表的第一個元素 ht- pInternalPointer = ht- pListHead;

得到返回值,通過

 zend_hash_get_html' target='_blank'>current_data == zend_hash_get_current_data_ex(ht, pData, NULL)  p = pos ? (*pos) : ht- pInternalPointer;*pData = p- pData;

取得hashtable中的值
然后刪除hashtable中的這個key值,并調用zend_hash_internal_pointer_reset重置hashtable
這個重置就是:ht- pInternalPointer = ht- pListHead;
即把當前的位置設置為鏈表的第一個元素。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

淺談PHP源碼七:關于nl2br, ltrim, rtrim, trim函數

淺談PHP源碼六:關于stream_get_wrappers函數

淺談PHP源碼五:關于array 數組的創建

以上就是淺談PHP源碼八:關于array_pop, array_shift的介紹的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嵊州市| 谢通门县| 盱眙县| 中西区| 专栏| 商都县| 邳州市| 恩平市| 监利县| 烟台市| 岑巩县| 长垣县| 浠水县| 桐梓县| 鸡泽县| 无为县| 长治市| 珠海市| 松溪县| 泰安市| 大同县| 鄂温| 衡阳县| 开封县| 宁陕县| 高碑店市| 修文县| 玛纳斯县| 彰武县| 休宁县| 桃源县| 黄梅县| 北安市| 建瓯市| 齐齐哈尔市| 板桥市| 克拉玛依市| 河北省| 射阳县| 石景山区| 安远县|