résultats étranges dans un foreach [Résolu -> étudie!]

Petit nouveau ! | 5 Messages

02 déc. 2011, 15:02

Hello,

j'ai créé un snippet de debug pour afficher mes variables de session, ces variables session sont parfois des éléments simples et parfois des tableaux.
Je ne comprends pas le résultat que PHP me renvoie; il considère que userIdentified est un tableau (alors que c'est un string) et il ne vois pas que params en est un!?

Code : Tout sélectionner

//debug : display every SESSION VALUES echo "<br>---- session values: ----<br>"; foreach($_SESSION as $var => $value) { echo $var." ( ".gettype($var)." ) : ".$value; if ($value == "Array") echo " TABLEAU taille : ".count($var)."<br>"; else echo "<br>"; } echo "---- end session values ----<br>";
cela me retourne

Code : Tout sélectionner

---- session values: ---- userLogin ( string ) : admin userIdentified ( string ) : 1 TABLEAU taille : 1 params ( string ) : Array ---- end session values ----
merci de me confirmer si je suis fou ou pas :)
Modifié en dernier par eki27 le 02 déc. 2011, 19:24, modifié 1 fois.

Mammouth du PHP | 1967 Messages

02 déc. 2011, 15:13


if ($value == "Array") echo " TABLEAU taille : ".count($var)."<br>"; else echo "<br>"; 
Il vaut mieux utiliser is_array() car la tu test si ta variable est égal au string "Array"
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 5 Messages

02 déc. 2011, 15:22

En effet, tout mon problème est là; car comme tu le constates, PHP vois ma variable params (qui est bien un array) comme un string!?
Si je teste avec is_array (ce qui effectivement est plus logique), je n'entrerai jamais dans la condition.

De plus, il me dit la variable params est un string et son contenu est "Array" !!??

Mammouth du PHP | 1967 Messages

02 déc. 2011, 15:37

Je relis ton script avec plus d'attention, et je le trouve étrange.

premièrement un var_dump($_SESSION) devrait faire à peu près ce que tu cherche.
le gettype() porte sur la clé et non pas sur la valeurs, tout sera donc un string ou un numeric
le count() agit sur la clé, donc le retour sera toujours 1
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 5 Messages

02 déc. 2011, 18:45

le var_dump semble être un meilleur départ, merci.

Mais je ne comprends toujours pas pourquoi PHP inverse les résultats : par exemple:

Code : Tout sélectionner

print "test vardump ".var_dump($_SESSION);
retourne l'array des variables de session et ensuite le string "test vardump".
J'ai raté quelque chose d'essentiel dans la compréhension des processus PHP?

ViPHP
xTG
ViPHP | 7331 Messages

02 déc. 2011, 18:53

var_dump() est une fonction d'affichage et non uniquement de formatage.
echo "test de var_dump : ";
var_dump($var);
Or dans l'ordre PHP résout d'abord les composantes du print.

Petit nouveau ! | 5 Messages

02 déc. 2011, 19:14

ok, j'ai vu une solution pour mettre le var_dump en buffer pour ensuite récupérer le contenu dans une variable... mais bon, je crois surtout que je dois m'adapter à la philosophie PHP et étudier d'avantage les spécifications si je désire l'utiliser un peu correctement...