Comment pousser un nouveau tableau de la valeur dans une session PHP array?
J'ai de la suite à du mauvais code:
$_SESSION['ids'] = array('strawberry', 'banana', 'apple');
et souhaitez insérer certaines valeurs d'une condition (quand une personne clique sur un bouton de certaines etc).
array_push($_SESSION['ids'], 'orange');
mais il ne semble pas fonctionner?
Le tableau d'origine avec 'fraise', 'banane', 'apple "sont là quand j'ai vue un var_dump ed, mais" orange' est pas là?
$_SESSION['ids'][] = 'orange';
? Avez-vous le début de la séance lors de la poussée ?c'est ennuyeux, parce que le code que vous avez écrit devrait fonctionner...
Merci, cela semble fonctionner. Aucune idée de pourquoi mon chemin n'était pas bien 🙁
Avez-vous des stripped-down exemple que vous pouvez reproduire le problème sur un autre ordinateur? La Cause de votre façon de doit de travail, sauf si vous faites quelque chose de funky ailleurs.
Oui, cela devrait fonctionner. La seule différence entre ces deux méthodes (autant que je sache), c'est que:
array_push() will raise a warning if the first argument is not an array. This differs from the $var[] behaviour where a new array is created.
.
OriginalL'auteur Keith Donegan | 2013-12-31
Vous devez vous connecter pour publier un commentaire.
J'ai testé le code suivant sur PHP 5.4:
La sortie est comme suit:
session_start()
n'a même pas de faire quelque chose d'important ici. Si$_SESSION
n'existe pas déjà, il ressort dans l'existence comme un tableau à l'instant vous avez essayé de définir une clé en elle, comme n'importe quel autre undefined variable.Intéressante remarque @cHao - et vous êtes tout à fait correcte; à ce stade, $_SESSION devient une variable normale comme les autres. Je me demande, alors, qu'arriverait-il si vous avez exécuté le code suivant:
<?php $_SESSION['hello'] = 'world'; session_start(); var_dump($_SESSION); $_SESSION['foo'] = 'bar'; var_dump($_SESSION); ?>
De deux choses l'une: soit
$_SESSION
seront écrasés, ou il ne sera pas. 🙂 Si ça ne marche pas, alors j'imagine qu'avant desession_start()
feront également partie de la session.Tout-en-tout, le meilleur ne vaut pas la peine de l'essayer. 😉
Salut @keith-donegan. si cette ou de toute réponse qui a résolu votre question, veuillez vous envisagez de accepter, en cliquant sur la coche. Cela indique à l'ensemble de la communauté que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation à le faire.
OriginalL'auteur Dykotomee
Le code que vous avez utilisé doit fonctionner parfaitement même sans le début de la session. En vous donnant toujours la séquence des états.
code
O/P
phpfiddle démo
OriginalL'auteur Rajesh Paul
Simple, prenez un élément de tableau. Dans le code suivant, j'ai fait une session de l'élément de l'élément de tableau. À l'aide de array_push nous pouvons ajouter des éléments. Et n'oubliez pas de démarrer la session.
OriginalL'auteur Ravi Mane
Comme mentionné dans les commentaires, vous pouvez pousser quelque chose à la
$_SESSION['ids']
tableau, par exemple:http://uk1.php.net/array_push
Ils sont à peu près le même. La seule différence, je pense, est ce qui se passe quand le "tableau" n'existe pas. Et qui ne devrait pas s'appliquer ici, à moins que le code que nous ne pouvons pas voir, c'est de faire quelque chose de bizarre.
OriginalL'auteur putvande
Essayer cette
Testé et sa fonctionne
OriginalL'auteur Arda
Vous pouvez faire ceci :
Grâce Hayder. Elle fonctionne.
C'est bizarre. Votre code d'origine doit avoir travaillé trop! Je l'ai essayé et il fonctionne.
OriginalL'auteur Hyder B.
Essayez ceci:
Merci!
OriginalL'auteur Anand Solanki
$_SESSION
n'est pas un super mondial à l'instar des autres variables. Un rapide tour sur php le gestionnaire de session est donnée à ici, fondamentalement, vous avez obtenu d'appeler session_start pour initialiser votre session avant que la pile est correctement accessible pour la suite des écritures /lectures.$_SESSION
est une superglobale tout comme les autres. La définition de "superglobale" se rapporte uniquement à une variable de portée et/ou de la visibilité. Si oui ou non la variable existe, à certains moments, ne fait pas partie de la définition, aussi longtemps que si/quand elle existe, elle existe partout.La preuve:
<?php call_user_func(function() { $_SESSION['stuff'] = [1, 2, 3]; }); var_dump($_SESSION);
fonctionne-sans avis-même si une session est jamais commencé...et$_SESSION
reflète les changements de la fonction anonyme. C'est uniquement possible avec les superglobales.OriginalL'auteur Peter