2009-03-24 23 views
337

Gdybym zdefiniować tablicę w PHP, takich jak (nie określić jego rozmiar):Jak dodać elementy do pustej tablicy w PHP?

$cart = array(); 

Czy ja po prostu dodać elementy do niego stosując następujące?

$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 

Nie tablice w PHP mają metodę dodawania, np cart.add(13)?

Odpowiedz

567

Zarówno array_push i sposób opisałeś zadziała.

<?php 
$cart = array(); 
$cart[] = 13; 
$cart[] = 14; 
// etc 
?> 

jest taka sama jak:

<?php 
$cart = array(); 
array_push($cart, 13); 
array_push($cart, 14); 

// Or 
$cart = array(); 
array_push($cart, 13, 14); 
?> 
+137

Jak podano w dokumentacji PHP, jeśli jesteś tylko naciskając jeden element za każdym razem (jak w pętli) lub jeden element raz, najlepiej użyć metody '$ cart [] = 13" nie tylko dlatego, że mniej znaków wykonuje tę samą operację, ale także nie nałożyć na wydajność wywołania funkcji, która będzie miała wartość array_push(). Edycja: Ale, świetna odpowiedź. Skutecznie to samo, a większość zastosowań nie zauważy różnicy w wydajności, ale pomoże poznać te niuanse. – Mattygabe

+38

Czy to tylko ja, czy składnia '$ cart [] = ... 'na pierwszy rzut oka wygląda jak przypisanie zmiennej, a nie ukryta tablica_push? –

+3

To na pewno mi odpowiada. Nie miałbym nic przeciwko wytłumaczeniu, dlaczego to ** nie ** zadanie. – BrassApparatus

6

Można użyć array_push. Dodaje elementy na końcu tablicy, jak w stosie.

Mogłeś również zrobić to w ten sposób:

$cart = array(13, "foo", $obj); 
52

Lepiej nie używać array_push i po prostu korzystać z tego, co zaproponował. Funkcje po prostu dodają narzut.

//We don't need to define the array, but in many cases it's the best solution. 
$cart = array(); 

//Automatic new integer key higher than the highest 
//existing integer key in the array, starts at 0. 
$cart[] = 13; 
$cart[] = 'text'; 

//Numeric key 
$cart[4] = $object; 

//Text key (assoc) 
$cart['key'] = 'test'; 
+5

"Jeśli dodajesz wiele wartości do tablicy w pętli, szybciej jest użyć array_push niż powtarzanych [] = instrukcji" http://www.php.net/manual/en/function.array-push.php# 84959 –

+1

Absolutnie poprawne, jeśli Twój przypadek użycia dodaje pojedynczą pozycję lub przedmioty pojedynczo. Jeśli wszystkie wartości są znane w tym samym czasie, najlepiej jest po prostu użyć notacji array_push w zależności od tego, ile elementów trzeba dodać, dodatkowe znaki od ponownego wpisania nazwy tablicy za każdym razem mogą być bardziej przeszkodą w wydajności niż wywołanie funkcji nad głową. Jak zwykle, przy wyborze należy dokonywać oceny. Dobre odpowiedzi! – Mattygabe

-1

Kiedy ktoś chce elementy mają być dodawane do zera elementu indeksowania, myślę, że to będzie działać, a także:

// adding elements to an array with zero-based index 
$matrix= array(); 
$matrix[count($matrix)]= 'element 1'; 
$matrix[count($matrix)]= 'element 2'; 
... 
$matrix[count($matrix)]= 'element N'; 
2

PAMIĘTAJ, metoda ta nadpisuje pierwszą tablicę, więc należy używać tylko wtedy, gdy jesteś pewnie!

$arr1 = $arr1 + $arr2; 

(see source)

+1

Dlaczego spadł, czy ktoś może wyjaśnić, dlaczego to jest złe? czy jest niepewny? – Sandy

+1

@SandyBeach to nie jest odpowiedź – Albert

7

Na podstawie moich doświadczeń, ty rozwiązanie jest w porządku (najlepiej), gdy przyciski nie są ważne:

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
Powiązane problemy