配列メンバーを追加するためにPHPで使用するほうがよいこと
$array[] = $value;
または
array_push($array, $value);
?
マニュアルには関数呼び出しを避ける方がいいと書いてありますが、私も読んだ方$array[]
がずっと遅いですarray_push()
。いくつかの説明やベンチマークは何ですか?
配列メンバーを追加するためにPHPで使用するほうがよいこと
$array[] = $value;
または
array_push($array, $value);
?
マニュアルには関数呼び出しを避ける方がいいと書いてありますが、私も読んだ方$array[]
がずっと遅いですarray_push()
。いくつかの説明やベンチマークは何ですか?
回答:
ベンチマークはありませんが、個人的に$array[]
は見た目がすっきりしているように感じます。数十万の文字列を配列に追加することを計画していない限り、ヘアを数ミリ秒で正直に分割することはかなり重要ではありません。
編集:このコードを実行しました:
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
$array[] = $i;
}
print microtime(true) - $t;
print '<br>';
$t = microtime(true);
$array = array();
for($i = 0; $i < 10000; $i++) {
array_push($array, $i);
}
print microtime(true) - $t;
最初の方法を使用する$array[]
と、2番目の方法よりもほぼ50%高速です。
Run 1
0.0054171085357666 // array_push
0.0028800964355469 // array[]
Run 2
0.0054559707641602 // array_push
0.002892017364502 // array[]
Run 3
0.0055501461029053 // array_push
0.0028610229492188 // array[]
PHPマニュアルに次のように記載されているので、これは驚くべきことではありません。
array_push()を使用して1つの要素を配列に追加する場合は、$ array [] =を使用することをお勧めします。この方法では、関数を呼び出すオーバーヘッドがないためです。
それがarray_push
複数の値を追加するときにより効率的であるならば、それが言い表されている方法は驚かないでしょう。編集:好奇心から、いくつかのさらなるテストを行い、大量の追加を行っても、個々の$array[]
呼び出しは1つの大きなものよりも高速ですarray_push
。面白い。
$array[]
実際にははるかに高速であることが確認されました。私のマシンでの1M割り当てでは、300ms対2000msです。ただし、array_pushで一度に20項目を追加すると、約20 $array[] =
秒で高速になりました。
注:array_push()を使用して配列に要素を1つ追加する場合は、$ array [] =を使用することをお勧めします。この方法では、関数を呼び出すオーバーヘッドがないためです。
通りに言えば、関数呼び出しのオーバーヘッドがないため、[]の方が高速です。さらに、PHPの配列関数が本当に好きな人はいない...
「それは...干し草の山か、針か...それとも、針の干し草か...あ、f ***それ... [] = "
2つ目は関数呼び出しであるため、一般に、コアアレイアクセス機能を使用するよりも遅くなるはずです。しかし、スクリプト内の1つのデータベースクエリでも、1.000.000への呼び出しを上回ると思いますarray_push()
。
追加したくないのint array_push(...)
は、配列内の新しい要素数を返すことです(php doc)。便利でコンパクトな$myArray[] = ...; $total = count($myArray);
。
また、array_push(...)
変数をスタックとして使用されたときに意味があります。