1.array_push method
array_push method, pushes one or more elements to the end of the array.
int array_push ( array &$array , mixed $var [, mixed $... ] )
array_push() treats the array as a stack and pushes the passed variables into the end of the array. The length of the array will increase according to the number of variables pushed onto the stack.
The same effect as the following:
<?php $arr[] = $value; ?>
2. Compare array_push and $arr[]=$value performance
Use array_push to push 1000000 elements
<?php $starttime = get_microtime(); $arr = array(); for($i=0; $i<1000000; $i++){ array_push($arr, $i); } $endtime = get_microtime(); printf("run time %f ms\r\n", ($endtime-$starttime)*1000); function get_microtime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
Execution time: 2735.545158 ms
Use $arr[] = $value pushes 100,000 elements
<?php $starttime = get_microtime(); $arr = array(); for($i=0; $i<1000000; $i++){ $arr[] = $i; } $endtime = get_microtime(); printf("run time %f ms\r\n", ($endtime-$starttime)*1000); function get_microtime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; } ?>
Execution time: 417.458057 ms
Result: Each time one element is pushed, using $arr[]=$value is 7 times faster than using the array_push method.
3. Push multiple elements at the same time for comparison
Use array_push method to push 100000 elements, 50 elements each time
<?php $starttime = get_microtime(); $arr = array(); for($i=0; $i<1000000; $i=$i+50){ array_push($arr, $i,$i+1,$i+2,$i+3,$i+4,$i+5,$i+6,$i+7,$i+8,$i+9,$i+10, $i+11,$i+12,$i+13,$i+14,$i+15,$i+16,$i+17,$i+18,$i+19, $i+21,$i+22,$i+23,$i+24,$i+25,$i+26,$i+27,$i+28,$i+29, $i+31,$i+32,$i+33,$i+34,$i+35,$i+36,$i+37,$i+38,$i+39, $i+41,$i+42,$i+43,$i+44,$i+45,$i+46,$i+47,$i+48,$i+49); } $endtime = get_microtime(); printf("run time %f ms\r\n", ($endtime-$starttime)*1000); function get_microtime(){ list($usec, $sec) = explode(' ', microtime()); return (float)$usec + (float)$sec; }
Execution time: 250.149012 ms
Result: Use array_push to push multiple elements at one time , faster than using $arr[]=$value multiple times to push. The more elements array_push pushes in at one time, the more efficient it is.
Summary:
If you are pushing an element, using $arr[]=$value is efficient because it can save the extra burden of calling functions.
If multiple elements are pushed at the same time, using array_push is more efficient because there is no need to repeatedly obtain the pointer to the end of the file.