Page 1 sur 1

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

Posté : 02 déc. 2011, 15:02
par eki27
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 :)

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 15:13
par Spols

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"

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 15:22
par eki27
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" !!??

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 15:37
par Spols
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

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 18:45
par eki27
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?

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 18:53
par xTG
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.

Re: résultats étranges dans un foreach

Posté : 02 déc. 2011, 19:14
par eki27
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...