2009-03-24 16 views
337

Se io definisco un array in PHP, come (non mi definisco la sua dimensione):Come aggiungere elementi a un array vuoto in PHP?

$cart = array(); 

Ho semplicemente aggiungere elementi ad esso utilizzando il seguente?

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

Non gli array in PHP hanno un metodo di aggiungere, ad esempio, cart.add(13)?

risposta

567

Sia array_push e il metodo che hai descritto funzionerà.

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

è la stessa:

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

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

Come indicato nella documentazione di PHP, se sei solo spingendo un singolo elemento ogni volta (come in un loop) o un singolo elemento una volta, è meglio usare il metodo '$ cart [] = 13' non solo perché sono meno i personaggi a fare la stessa operazione, ma non lo fa imporre l'overhead delle prestazioni di una chiamata di funzione, che sarebbe array_push(). Modifica: Ma, ottima risposta. Effettivamente lo stesso, e la maggior parte degli usi non noterà nemmeno una differenza di prestazioni, ma aiuta a conoscere queste sfumature. – Mattygabe

+38

È solo per me o la sintassi '$ cart [] = ...', a prima vista, assomiglia ad un assegnamento di variabile e non ad un array_push implicito? –

+3

Lo fa sicuramente per me. Non mi dispiacerebbe una spiegazione del perché il suo ** non ** un incarico. – BrassApparatus

6

È possibile utilizzare array_push. Aggiunge gli elementi alla fine dell'array, come in una pila.

Avresti potuto fare anche in questo modo:

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

E 'meglio non utilizzare array_push e basta usare quello che hai suggerito. Le funzioni aggiungono semplicemente un sovraccarico.

//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

"Se si aggiungono più valori a un array in un ciclo, è più veloce usare array_push che ripetuto [] = istruzioni" http://www.php.net/manual/en/function.array-push.php# 84959 –

+1

Assolutamente corretto se il tuo caso d'uso è l'aggiunta di un singolo articolo o articoli uno alla volta. Se tutti i valori sono noti allo stesso tempo, probabilmente è meglio usare solo la notazione array_push a seconda di quanti elementi devono essere aggiunti i caratteri in più da ridigitare il nome dell'array ogni volta che può essere più di un ostacolo alle prestazioni rispetto alla chiamata di funzione over-head. Come sempre, il giudizio dovrebbe essere esercitato quando si sceglie. Buone risposte! – Mattygabe

-1

Quando si vuole elementi da aggiungere con base zero elemento di indicizzazione, credo che questo funzionerà così:

// 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

ricordate, questo metodo sovrascrive primo array, in modo da utilizzare solo quando si è sicuro!

$arr1 = $arr1 + $arr2; 

(see source)

+1

Perché il downvote, qualcuno può spiegare perché questo è male? è insicuro? – Sandy

+1

@SandyBeach non è una risposta – Albert

7

Sulla base della mia esperienza, è la soluzione va bene (meglio) quando le chiavi non sono importanti:

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
Problemi correlati