PHP中數組插入數據一般有這麼幾種:php
$arr = array(‘apple’, ’banana’);
$arr = array(); $arr[] = ‘apple’; $arr[] = ‘banana’;
$arr = array(‘apple’); array_push($arr, ‘banana’, ‘orange’);
在項目中,咱們大部分狀況都是先從數據庫中獲取數據,而後轉成數組形式,而對於第一種狀況,在定義數組的時候直接賦值每每只適合數據量很小,並且是已知的狀況,因此就不存在什麼代碼優化了,咱們主要講第二種和第三種。數據庫
關於array_push的使用,就很少介紹,本身看官方文檔(https://secure.php.net/manual/en/function.array-push.php)。數組
咱們使用php 7.2
來測試,而且沒有作任何配置上的優化。測試方法:定義一個數組,分別用第二種和第三種方式插入10萬條記錄,代碼大體以下:app
convert
函數用來查看內存佔用狀況,運行結果以下:函數
經過屢次運行上述代碼,能夠發現直接使用數組變量賦值耗時在0.0045
左右,而使用array_push
的方式耗時在0.006
左右,消耗的內存都是同樣的,由於都是10萬條記錄。性能
對比兩種方法,發現方法二確實比調用array_push
快,由於在每次循環時函數調用須要消耗一些時間,但僅僅看上面的測試,並不以爲第二種方法比第三種方法快多少,徹底能夠忽略不計的。測試
的確,這種優化在絕大多數應用中和沒優化沒啥區別,可是當應用達到瓶頸的時候,每一處不起眼的優化可能都會使性能提升很多,何況咱們的測試中數組的結構很簡單,真實項目中數據類型不是這麼單一,可能仍是嵌套的數組,數組的大小可能也不止10萬。優化
咱們再來看看二者的差別,array_push()
是函數調用,另外一個不是,這就是說了,從代碼量上看二者也是同樣的,從數組結構上看,測試中咱們都沒有使用索引,默認都是從0開始,若是要使用key => value
形式插入數據時,array_push()
就不是很好處理了,這時使用法二就很方便:$array1[$key] => $x
。.net
前面都是說array_push()
怎麼很差,但有時候array_push
仍是很好用的。好比咱們要一次插入多個元素時,就能夠這樣使用:code
$arr = array(‘a’, ’b’); array_push($arr, ‘c’, ‘d’); // $arr = array(‘a’, ’b’, ‘c’, ‘d’);
經過上面對比可見,PHP中數組插值的方法有不少,雖然每種方法差很少,但瞭解每一種方法什麼時候使用仍是頗有必要的。
歡迎關注個人公衆號: