2010-11-16 7 views

Odpowiedz

20

Nie wystąpienia tablicę w PHP przy użyciu:

$foo=new array(); // error in PHP 

To za javascript:

foo=new Array(); // no error in Javascript 

W PHP new służy tylko do tworzenia instancji obiektów.

+1

Ma sens, dzięki! – mattypie

+3

+1. Po prostu zwróćmy uwagę, że * "W PHP, nowy jest używany tylko do tworzenia obiektów." * ... Również w JavaScript, po prostu "Array" jest obiektem w JavaScript, podczas gdy w PHP jest to uporządkowana mapa (coś JavaScript nie ma na słowo, ponieważ uporządkowana mapa w JS jest obiektem). – netcoder

+0

Masz absolutną rację. Tablice asocjacyjne w JavaScript są obiektami. – stillstanding

9

Różnica polega na tym, że użycie new nie działa, ponieważ array() jest konstrukcją językową, a nie konstruktorem obiektów. Zgłasza błąd:

Parse error: syntax error, unexpected T_ARRAY in php shell code on line 1 

Z drugiej strony, deklarując ją jak

$f=array(); 

przed rozpoczęciem przypisywania pozycji jest dobrą praktyką. Rygorystyczny tryb zgłaszania błędów może ostrzegać przed używaniem niezadeklarowanej zmiennej w przeciwnym razie.

+0

dziękuję za pomoc. Teraz wszystko nabiera sensu. – mattypie

0

foo = new Array(); to składnia javascript.

Zaleca się wstępne zainicjowanie macierzy w razie potrzeby, aby przypadkowo wypełnić dane w istniejącej macierzy o tej samej nazwie zdefiniowanej gdzie indziej w kodzie.

5

Jesteś w stanie utworzyć instancję tablicy w PHP za pomocą słowa kluczowego new, jednak jest ona nieco bardziej masywna niż tablice utworzone przy użyciu funkcji array() i nie używa tego samego połączenia.

new ArrayObject(); 

będzie instancję tablicy jako obiektu. Co ważniejsze, jest to klasa rozszerzalna, jeśli chcesz używać składni tablicowej z obiektem w PHP zorientowanym obiektowo. W większości przypadków wskazane jest użycie funkcji array() w celu uzyskania szybkości i prostoty.

Edycja: domyślam się, że nigdy nie odpowiedziałem na to pytanie.

$var = array(); 
$var[] = 'car'; 

stworzy nową pustą tablicę, a następnie doda "samochód" do tablicy. To dobra forma do inicjowania dowolnych tablic. Byłoby lepiej, aby napisać te dwa wiersze jako jedna: $var = array('car');

$var[] = 'car'; 

utworzy nową tablicę z „samochód” w nim, jeśli $var nie jest tablicą lub jest pusta.Jeśli zdarzyło się, że $var zostało już zadeklarowane jako tablica, może się zdarzyć, że przypadkowo zachowano kilka starszych wartości (dlatego warto inicjować tablice).

$var = new ArrayObject(); 
$var[] = 'car'; 

jest sposobem OOP do zadeklarowania tablicy. Jest to nieco więcej zasobów intensywne, tak trzymać array() chyba że masz dobry powód do korzystania ArrayObject

UWAGA:

Zwiększanie niezainicjowany zmienna numeryczna jest znacznie wolniejszy niż zwiększający się zainicjowanego zmienną liczbową ($i++ jest wolniejszy niż $i = 0; $i++). Nie dotyczy to tablic w php: ($var[] = 'car' jest mniej więcej taki sam jak $var = array(); $var[] = 'car')

+1

Istnieje również "SplFixedArray" – Gordon

Powiązane problemy