¿Cómo agregar elementos a una matriz vacía en PHP?

Si defino una matriz en PHP como (no defino su tamaño):

$cart = array();

¿Simplemente le agrego elementos usando lo siguiente?

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

¿Las matrices en PHP no tienen un método de adición, por ejemplo, cart.add(13)?

preguntado el 24 de marzo de 09 a las 07:03

9 Respuestas

Ambos array_push y el método que describiste funcionará.

$cart = array();
$cart[] = 13;
$cart[] = 14;
// etc

//Above is correct. but below one is for further understanding
$cart = array();
for($i=0;$i<=5;$i++){
    $cart[] = $i;  
}
echo "<pre>";
print_r($cart);
echo "</pre>";

Es lo mismo que:

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

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

respondido 22 nov., 18:08

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

¿Soy solo yo o el $cart[]=... la sintaxis, a primera vista, parece una asignación de variable y no un array_push implícito? - brad hein

Definitivamente lo hace para mí. No me importaría una explicación de por qué es no un trabajo. - lima y coco

$ carrito [] = 13; es más rápido. tiene menos personajes y se ve mejor. - gal bracha

Solo ofreceré mi punto de vista alternativo de que es MUY confuso para otros programadores de lenguaje leer la sintaxis de cart [] = ..., tengo experiencia con muchos lenguajes y nunca adivinaría que eso es lo que hace. - Erti-Chris Eelmaa

Es mejor no usar array_push y usa lo que sugieres. Las funciones solo agregan gastos generales.

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

Respondido 31 Jul 15, 08:07

"Si está agregando varios valores a una matriz en un bucle, es más rápido usar array_push que repetidas [] = declaraciones" php.net/manual/en/function.array-push.php#84959 - Ollie de vidrio

Absolutamente correcto si su caso de uso es agregar un solo elemento o elementos uno a la vez. Si todos los valores se conocen 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 para el rendimiento que la llamada a la función gastos generales. Como siempre, se debe ejercer juicio al elegir. Buenas respuestas! - mattygabe

Esta respuesta es la más completa. - Lokiare

1) array_push() tiene un valor de retorno, mientras que los demás no. ¿Quizás esta es la razón de su sobrecarga? Parece ser un consenso utilizar los otros métodos, a menos que necesite ese valor de retorno. 2) Si necesita agregar elementos al final de la matriz, utilizar cualquiera array_push() or += método de concatenación (no se muestra en esta respuesta), o $cart[] = 13 métodos. Usando el método de tecla con nombre / numérico ($cart[4] = $object y los métodos $ cart ['key'] = 'test'` no garantizar el elemento se agregará al final de la matriz, solo que será in la matriz. - sherylhohman

@SherylHohman: Este $ cart [] = agregará valores al final de la matriz. - OIS

Según mi experiencia, solución que está bien (la mejor) cuando las claves no son importantes:

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

respondido 05 nov., 20:14

Puedes usar array_push. Agrega los elementos al final de la matriz, como en una pila.

También podrías haberlo hecho así:

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

respondido 24 mar '09, 10:03

$cart = array();
$cart[] = 11;
$cart[] = 15;

// etc

//Above is correct. but below one is for further understanding

$cart = array();
for($i = 0; $i <= 5; $i++){
          $cart[] = $i;  

//if you write $cart = [$i]; you will only take last $i value as first element in array.

}
echo "<pre>";
print_r($cart);
echo "</pre>";

Respondido 23 Oct 19, 02:10

$ carrito [] = $ i; - esa parte del código agrega elementos a la matriz ----> $ cart = [$ i]; - esto pasará el compilador pero no obtendrá lo que desea - desenchufar

RECUERDE, este método sobrescribe la primera matriz, ¡así que utilícelo solo cuando esté seguro!

$arr1 = $arr1 + $arr2;

(ver fuente)

contestado el 23 de mayo de 17 a las 12:05

¿Por qué el voto negativo, alguien puede explicar por qué esto es malo? es inseguro? - Sandy

@SandyBeach no es una respuesta - mateos

$products_arr["passenger_details"]=array();
array_push($products_arr["passenger_details"],array("Name"=>"Isuru Eshan","E-Mail"=>"isuru.eshan@gmail.com"));
echo "<pre>";
echo json_encode($products_arr,JSON_PRETTY_PRINT);
echo "</pre>";

//OR

$countries = array();
$countries["DK"] = array("code"=>"DK","name"=>"Denmark","d_code"=>"+45");
$countries["DJ"] = array("code"=>"DJ","name"=>"Djibouti","d_code"=>"+253");
$countries["DM"] = array("code"=>"DM","name"=>"Dominica","d_code"=>"+1");
foreach ($countries as $country){
echo "<pre>";
echo print_r($country);
echo "</pre>";
}

respondido 22 nov., 18:06

Ambos array_push y el método que describiste funcionará.

$customArray = array();
$customArray[] = 20;
$customArray[] = 21;

Arriba es correcto, pero abajo uno es para mayor comprensión

$customArray = array();
for($i=0;$i<=12;$i++){
    $cart[] = $i;  
}
echo "<pre>";
print_r($customArray);
echo "</pre>";

Respondido 11 Feb 21, 23:02

Cuando uno quiere que se agreguen elementos con indexación de elementos de base cero, supongo que esto también funcionará:

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

Respondido el 23 de junio de 14 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.