2009-03-24 17 views
337

Si defino una matriz en PHP como (no me defino su tamaño):¿Cómo agregar elementos a una matriz vacía en PHP?

$cart = array(); 

¿Debo simplemente añadir elementos a él utilizando el siguiente?

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

No matrices en PHP tienen un método add, por ejemplo, cart.add(13)?

Respuesta

567

Tanto array_push y el método que ha descrito funcionará.

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

es lo mismo que:

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

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

Como se indica en la documentación de PHP, si sólo presionando un solo elemento cada vez (como en un bucle) o un solo elemento una vez, lo mejor es usar el método '$ cart [] = 13' no solo porque tiene menos caracteres para hacer la misma operación, sino que tampoco imponer la sobrecarga de rendimiento de una llamada a función, que array_push() haría. Editar: Pero, gran respuesta. Efectivamente, lo mismo, y la mayoría de los usos ni siquiera notará una diferencia en el rendimiento, pero ayuda a conocer esos matices. – Mattygabe

+38

¿Soy solo yo o la sintaxis '$ cart [] = ...', a primera vista, parece una asignación de variable y no una implícita array_push? –

+3

Definitivamente me afecta. No me importaría una explicación de por qué es ** no ** una tarea. – BrassApparatus

6

Puede utilizar array_push. Agrega los elementos al final de la matriz, como en una pila.

Se podría también lo ha hecho así:

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

Es mejor no usar array_push y sólo tiene que utilizar lo que usted sugiere. Las funciones solo agregan sobrecarga.

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

"Si agrega varios valores a una matriz en un bucle, es más rápido usar array_push que repetir [] = statements" http://www.php.net/manual/en/function.array-push.php# 84959 –

+1

Absolutamente correcto si su caso de uso agrega un solo elemento o elementos de a uno por vez. Si se conocen todos los valores al mismo tiempo, probablemente sea mejor usar la notación array_push, dependiendo de cuántos elementos se deben agregar, los caracteres adicionales de volver a escribir el nombre de la matriz cada vez pueden ser más un obstáculo de rendimiento que la llamada a la función gastos generales. Como siempre, se debe ejercer juicio al elegir. Buenas respuestas! – Mattygabe

-1

Cuando uno quiere elementos que se añadirán con basado en cero de indexación elemento, creo que esto va a funcionar así:

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

Recuerde, este método sobrescribe primera matriz, a fin de utilizar sólo cuando esté ¡Por supuesto!

$arr1 = $arr1 + $arr2; 

(see source)

+1

¿Por qué el voto a favor, alguien puede explicar por qué esto es malo? ¿es inseguro? – Sandy

+1

@SandyBeach no es una respuesta – Albert

7

Basado en mi experiencia, que la solución está muy bien (mejor) cuando las teclas no son importantes:

$cart = array(); 
$cart[] = 13; 
$cart[] = "foo"; 
$cart[] = obj; 
Cuestiones relacionadas