PHP代碼優化—array_push

PHP中數組插入數據一般有這麼幾種:php

  1. 定義的時候直接賦值
$arr = array(‘apple’, ’banana’);
  1. 使用數組變量操做
$arr = array();
$arr[] = ‘apple’;
$arr[] = ‘banana’;
  1. 使用array_push()插入
$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中數組插值的方法有不少,雖然每種方法差很少,但瞭解每一種方法什麼時候使用仍是頗有必要的。

歡迎關注個人公衆號:

正義的程序猿

相關文章
相關標籤/搜索