Ne PHP $ dizi [] = $ değer veya array_push ($ dizi, $ değer) kullanmak daha iyidir?

7 Cevap php

Ne bir dizi elemanı $array[] = $value veya array_push($array, $value) ekleme için PHP kullanmak daha iyidir?

Manuel bir işlev çağrısı önlemek için daha iyi olduğunu söylüyor olsa da, ben de $array[] array_push() daha yavaş olduğunu okudum. Herkes herhangi bir açıklama veya kriterler var mı?

Teşekkür ederim.

7 Cevap

Hayır kriterler, ama ben şahsen $array[] bakmak temizleyici, ve sizin dizi için dizeleri yüzbinlerce ekleme planı sürece dürüst milisaniye tüyleri bölme oldukça ilgisizdir gibi hissediyorum.

Edit: Bu kodu Ran:

$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;

Kullanan ilk yöntem $array[], ikinci olandan neredeyse% 50 daha hızlıdır.

Some benchmark results:

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[]

Bu, PHP kılavuzu notları gibi, şaşırtıcı olmamalıdır:

Eğer diziye bir öğe eklemek için () array_push kullanırsanız o [] = çünkü bu şekilde bir işlevi çağırmadan hiçbir yükü yoktur $ dizi kullanmak daha iyidir.

Birden değerlerini eklerken array_push daha verimli ise o phrased yolu ben şaşırmam. EDIT: meraktan, biraz daha test yaptım, ve hatta eklemeler büyük miktarda bireysel $array[] aramaları daha hızlı bir büyük array_push vardır. İlginç.

Array_push ana kullanımı () Eğer dizinin ucuna birden çok değer itmek olabilir.

Bu documentation diyor:

If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.

Sokakta Word [] hızlı olmasıdır, çünkü işlev çağrısı için hiç tepegöz. Ayrıca, hiç kimse gerçekten PHP'nin dizi fonksiyonlarını seviyor ...

"Bu iğne samanlık ... ah, f *** o ... [] = o, samanlık ... iğne mi .... ya da"

Bir fark, yani bir dizi için bir defada birden fazla öğe zorlayabilir, daha iki parametre ile () array_push çağrı olabilir.

$myArray = array();
array_push($myArray, 1,2,3,4);
echo join(',', $myArray);

baskılar 1,2,3,4

Sadece nedeniyle bir işlev getireceğini havai eksikliği öğelerin yığına bir öğeyi bastırıyor gibi basit bir $ myarray [] bildirimi hızlı olacaktır.

İkincisi bu yüzden genellikle çekirdek dizi erişim özelliklerini kullanarak daha yavaş olması gereken bir işlev çağrısı olduğunu. Ama ben komut dosyası içinde bile bir veritabanı sorgusu array_push() 1.000.000 aramaları outweight düşünüyorum.