1.array_push メソッド
array_push メソッドは、1 つ以上の要素を配列の末尾にプッシュします。
int array_push ( array &$array , mixed $var [, mixed $... ] )
array_push() は配列をスタックとして扱い、渡された変数を配列の最後にプッシュします。配列の長さは、スタックにプッシュされた変数の数に応じて増加します。
以下と同じ効果:
<?php $arr[] = $value; ?>
2. array_push と $arr[]=$value のパフォーマンスを比較します
array_push を使用して 1000000 要素をプッシュします
<?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; } ?>
実行時間: 2735.545158 ミリ秒
$arr[] を使用します= $value は 100,000 個の要素をプッシュします
<?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; } ?>
実行時間: 417.458057 ミリ秒
結果: 1 つの要素がプッシュされるたびに、$arr[]=$value を使用すると、array_push メソッドを使用するより 7 倍高速になります。
3. 比較のために複数の要素を同時にプッシュします
array_push メソッドを使用して 100000 個の要素をプッシュします (毎回 50 要素)
<?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; }
実行時間: 250.149012 ミリ秒
結果: array_push を使用して複数の要素を一度にプッシュします。 $arr[]=$value を複数回使用してプッシュします。 array_push が一度にプッシュする要素が多いほど、効率が高くなります。
概要:
要素をプッシュする場合、$arr[]=$value を使用すると、関数呼び出しの余分な負担を軽減できるため効率的です。
複数の要素が同時にプッシュされる場合、array_push を使用すると、ファイルの末尾へのポインターを繰り返し取得する必要がないため、より効率的です。