6
votes

Pourquoi ne puis-je pas utiliser les entiers comme un index dans un tableau PHP $ _session?

EG:

Array(
[1] => 'username'
)

php

2 commentaires

C'est hérité des trucs de registre_globals. Quoi qu'il en soit, avoir de tels éléments dans la session est un non-sens. Array imbriqué est un moyen d'aller.


La possibilité d'incrémenter la variable de session aurait été utile car c'est un moyen facile de stocker des informations sur chaque demande précédente sans écraser. La façon dont j'ai travaillé autour de cette limitation était la façon dont @kenBeer a fait ci-dessous en prépage une chaîne uniforme à la valeur numérique. C'est un peu de tracas avec des frais généraux de calcul.


3 Réponses :


9
votes

$ _ session code> ne peut être utilisé que comme une matrice associative.

Vous pouvez faire quelque chose comme ça si: P>

$_SESSION['username_id'] = 23;


1 commentaires

GD logique. Selon la session, il n'accepte que associatier, de stocker sous le même indice de tableau et ensuite de stocker des valeurs INTEEGER en tant qu'indice de tableau



6
votes

Je soupçonne que c'est probablement parce que le tableau $ _session est purement un tableau associatif. De plus, comme le manuel PHP le met:

Les clés de l'associatif $ _session tableau sont soumis à la même Limitations en tant que noms de variable réguliers en php, c'est-à-dire qu'ils ne peuvent pas commencer par un numéro et doit commencer par une lettre ou souligné.

Incidemment, avez-vous vérifié votre journal d'erreur pour des erreurs de niveau de préavis? (Vous devrez peut-être pouvoir activer ce niveau.) Tentative d'utilisation d'une clé numérique augmentera probablement une erreur.


5 commentaires

J'ai eu AVERTISSEMENT: CI_Exceptions :: Inclure (application / erreurs / erreurs_php.php) [cI-exceptions .php à la ligne 163


@Show moi le code - qui ne semble pas lié. Les chances sont que vous n'avez pas d'erreurs de niveau de préavis activées.


Oui, l'erreur n'est pas liée mais je dois vérifier si des erreurs de niveau d'état sont activées?


@Show me le code - dans un monde idéal, oui, car cela vous aidera à vous assurer que vous écrivez le code de nettoyage. Cela dit, il peut y avoir des avertissements plutôt de nombreux avertissements, ce qui peut être un peu éteint. En tant que suggestion, vous pourriez laisser des avertissements pour le développement local, mais les désactiver pour la production. (N.B.: Incidemment, les serveurs de production devraient jamais d'erreurs d'affichage.)


@Show Me The Code - Vous devez vérifier la valeur ERROR_REPORTURE dans votre section PHP.INI - Recherchez la section "Manipulation d'erreurs et journalisation". (Vous pouvez également les définir dans un script via la fonction error_rporting, mais je ne le recommanderais pas.)



1
votes

Vous pouvez également prendre cette approche pour enregistrer une dimension de matrice: xxx

qui pourrait ressembler aux éléments suivants: xxx

par opposition à: xxx

qui utilise une autre dimension de matrice.


1 commentaires

Oui mais la première dimension doit être associative