W podręczniku PHP ( array_push ) mówi ...
Jeśli używasz array_push () do dodania jednego elementu do tablicy, lepiej użyć $ array [] =, ponieważ w ten sposób nie ma narzutu wywoływania funkcji.
Na przykład :
$arr = array();
array_push($arr, "stackoverflow");
print_r($arr);
vs
$arr[] = "stackoverflow";
print_r($arr);
Nie rozumiem, dlaczego istnieje duża różnica.
Odpowiedzi:
Kiedy wywołujesz funkcję w PHP (na przykład
array_push()
), wywołanie wiąże się z dodatkowymi kosztami, ponieważ PHP musi wyszukać odniesienie do funkcji, znaleźć jej pozycję w pamięci i wykonać dowolny kod, który zdefiniuje.Używanie
$arr[] = 'some value';
nie wymaga wywołania funkcji i implementuje dodawanie bezpośrednio do struktury danych. Dlatego dodawanie dużej ilości danych jest znacznie szybsze i bardziej efektywne pod względem wykorzystania zasobów$arr[]
.źródło
$arr[] = value
są szybsze? Próbując sobie wyobrazić, dlaczego kompilator miałby traktować kod inaczej.Możesz dodać więcej niż 1 element w jednym ujęciu do tablicy za pomocą array_push,
na przykład
array_push($array_name, $element1, $element2,...)
Gdzie $ element1, $ element2, ... to elementy do dodania do tablicy.
Ale jeśli chcesz dodać tylko jeden element naraz, to preferowana powinna być inna metoda (np. Użycie $ array_name []).
źródło
Różnica jest w poniższym wierszu: „ponieważ w ten sposób nie ma narzutu wywołania funkcji”.
źródło
Powinieneś zawsze używać,
$array[]
jeśli to możliwe, ponieważ zgodnie z informacją w polu nie ma narzutu na wywołanie funkcji. Jest więc nieco szybszy niż wywołanie funkcji.źródło
array_push - umieść jeden lub więcej elementów na końcu tablicy
Zwróć uwagę na słowa „ jeden lub więcej elementów na końcu ”, aby to zrobić używając
$arr[]
musisz uzyskać maksymalny rozmiar tablicyźródło
$arr[...index...] = $value;
z tym, o czym tutaj dyskutujemy, czyli z tym$arr[] = $value;
. Nie musisz znać rozmiaru ani tablicy, aby naciskać na koniec. Wiele elementów to po prostu wielokrotne wywołania:$arr[] = $value1; $arr[] = $value2; $arr[] = $value3;
wyjaśnij: 1. pierwszy z nich deklaruje zmienną w tablicy.
2. druga metoda array_push jest używana do wypychania łańcucha w zmiennej tablicowej.
3. na koniec wydrukuje wynik.
4. druga metoda polega na bezpośrednim zapisaniu ciągu w tablicy.
5. dane są drukowane w tablicy wartości przy użyciu metody print_r.
te dwa są takie same
źródło
oba są takie same, ale array_push tworzy pętlę w swoim parametrze, który jest tablicą i wykonuje $ array [] = $ element
źródło
Wiem, że to stara odpowiedź, ale innym może się przydać, aby wiedzieć, że kolejną różnicą między nimi jest to, że jeśli musisz dodać więcej niż 2/3 wartości na pętlę do tablicy, jej użycie jest szybsze:
zamiast:
edytuj - Zapomniałem zamknąć nawias
for
warunkowyźródło
for(...){ $arr = $arr + [$i, $i*2, $i*3, $i*4, ...] }
. Spekuluję, że array_push jest nadal nieco szybszy.Nikt nie powiedział, ale array_push tylko wypycha element do KONIEC TABLICY, gdzie $ tablica [indeks] może wstawić wartość do dowolnego podanego indeksu. Duża różnica.
źródło
$array[index] =
, co jest inną operacją niż$array[] = ...
. Pytanie podaje dwa fragmenty kodu i pyta, dlaczego byłaby między nimi znacząca różnica [wydajności] . Pytanie dosłownie oznacza$array[] = ...
, który jest specyficznym idiomem php, który nie zawiera indeksu. tablica + indeks rozwiązuje inny problem, daje inny kod i to inny kompromis.