589 votes

Comment ajouter des éléments à un tableau vide en PHP ?

Si je définis un tableau en PHP comme suit (je ne définis pas sa taille) :

$cart = array();

Dois-je simplement y ajouter des éléments à l'aide de ce qui suit ?

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

Les tableaux en PHP n'ont-ils pas une méthode d'ajout, par exemple, cart.add(13) ?

942voto

Bart S. Points 3260

Les deux sites array_push et la méthode que vous avez décrite fonctionnera.

$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>";

C'est la même chose que :

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

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

211 votes

Comme indiqué dans la documentation de PHP, si vous ne poussez qu'un seul élément à chaque fois (comme dans une boucle) ou un seul élément une seule fois, il est préférable d'utiliser l'attribut $cart[] = 13 non seulement parce qu'il y a moins de caractères pour effectuer la même opération, mais aussi parce qu'elle n'impose pas la surcharge de performance d'un appel de fonction, ce que ferait array_push(). Edit : Mais, excellente réponse. C'est effectivement la même chose, et la majorité des utilisateurs ne remarqueront même pas de différence de performance, mais il est utile de connaître ces nuances.

82 votes

C'est juste moi ou est-ce que le $cart[]=... ressemble, à première vue, à une affectation de variable et non à un array_push implicite ?

10 votes

C'est le cas pour moi. J'aimerais bien avoir une explication sur la raison pour laquelle sa pas une mission.

90voto

OIS Points 5566

Il est préférable de ne pas utiliser array_push et utiliser simplement ce que vous avez suggéré. Les fonctions ne font qu'ajouter des frais généraux.

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

13 votes

"Si vous ajoutez plusieurs valeurs à un tableau dans une boucle, il est plus rapide d'utiliser array_push que des instructions répétées [] =" php.net/manual/fr/function.array-push.php#84959

3 votes

Tout à fait exact si votre cas d'utilisation consiste à ajouter un ou plusieurs éléments à la fois. Si toutes les valeurs sont connues en même temps, il est probablement préférable d'utiliser la notation array_push. En fonction du nombre d'éléments à ajouter, les caractères supplémentaires liés à la saisie du nom du tableau à chaque fois peuvent être un obstacle aux performances plus important que le surcoût de l'appel de fonction. Comme toujours, il faut faire preuve de discernement lors du choix. Bonnes réponses !

2 votes

Cette réponse est la plus complète.

11voto

andi Points 5372

Vous pouvez utiliser array_push . Il ajoute les éléments à la fin du tableau, comme dans une pile.

Vous auriez pu aussi le faire comme ça :

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

-1voto

Gestix Team Points 1

Si l'on souhaite que les éléments soient ajoutés avec une indexation des éléments basée sur zéro, je suppose que cela fonctionnera également :

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

-2voto

Assaf Lavie Points 20181

Cela s'appelle array_push : http://il.php.net/function.array-push

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X