Probleme de reset sur un array ()

Résolu
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010 - 10 nov. 2009 à 16:15
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 - 10 nov. 2009 à 22:51
Bonjour à tous, je compte sur vos connaissances pour pouvoir m'éclairer.

Mon problème est le suivant:

<?php
$Accept_Lang=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);

if (is_array($Accept_Lang)) {echo 'c est un tableau';} else {'n est pas un tableau';}

reset($Accept_Lang);
?>


Le réponse est :
c est un tableau avec une erreur sur la function reset.

Erreur: E_WARNING: reset() [function.reset]: Passed variable is not an array or object

Pourtant lors de ma vérification j'ai bien un tableau??????

J'ai également essayé :

<?php
reset ( explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE'])); 
?>


Mais le problème est le même?

Avez-vous des explications?

11 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 21:12
Au fait, nous sommes bien d'accord, le code que je t'ai proposé ne génère pas d'erreur ?



Kohntark -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 22:18
Un var_dump te permet d'afficher des informations sur une variable ou un objet.
En l'occurrence le but ici était de vérifier le type de $b (array) et de voir ses valeurs :
array(4) { [0]=> string(2) "fr" [1]=> string(11) "fr-fr;q=0.8" [2]=> string(11) "en-us;q=0.5" [3]=> string(8) "en;q=0.3" }

En décomposant :
array : c'est un tableau
(4) : de 4 éléments
[0]=> : le premier index
string : contient une chaîne de caractères
(2) : de 2 caractères
"fr" : dont la valeur est fr
etc ...

C'est très pratique pour le debug, en particulier quand ça se corse un peu (objets)

Vraiment étrange cette histoire de "_" Je ne me souviens pas avoir déjà rencontré un tel problème.
Un nouveau sujet mériterait d'être posté, mais avant ça :
Quel est l'éditeur avec lequel tu codes ?
As tu le même problème si tu crées un fichier sous notepad en collant le code ?
Sous quelle version de Windows tournes tu ?


Cordialement,


Kohntark -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 16:58
Salut,

Heu, je ne vois pas trop en quoi ça pourrait être source de bug, à part le
else {'n est pas un tableau';}
=> else {echo 'n est pas un tableau';}

Tu es sur qu'il n'y a pas un pb de majuscule etc ... qq part ?


Cordialement,


Kohntark -
0
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010
10 nov. 2009 à 17:42
En fait le if else n'est que la pour vérifier que la variable $Accept_Lang est bien un tableau. Ce qui est le cas.

Pourtant la function reset me dit que ce n'est pas un tableau

Même en utilisant explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']); qui retourne un tableau j'ai la même erreur.

Par contre si je passe un tableau array('12', 'jhg', 'sldi') La function reset ne "râle" pas????

Je comprend plus rien???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 20:27
En fait le if else n'est que la pour vérifier que la variable $Accept_Lang est bien un tableau.

J'avais bien compris, je te faisais remarquer qu'il n'y avait pas de "echo" dans le else.

Qu'est ce que ça raconte si tu fais un truc comme ça dans un nouveau fichier :
<?php
$a = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$b = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);

var_dump($a, $b).'
';

if (is_array($b)) echo 'un tableau
'; else echo 'pas un tableau
';

echo current($b).'
';
next($b);
echo current($b).'
';
reset($b);
echo current($b).'
';
?>


Kohntark -
0
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010
10 nov. 2009 à 20:39
Qu'est ce que ça raconte si tu fais un truc comme ça dans un nouveau fichier :


Voici le resultat:

string(35) "fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3" array(4) { [0]=> string(2) "fr" [1]=> string(11) "fr-fr;q=0.8" [2]=> string(11) "en-us;q=0.5" [3]=> string(8) "en;q=0.3" } un tableau
fr
fr-fr;q=0.8
fr


Merci pour votre aide
0
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010
10 nov. 2009 à 20:51
Chose bizarre:

Si je change ma variable $Accept_Lang par $AcceptLang Le reset fonctionne Est-ce que ce serait possible que le _ dans le nom de la variable provoque un "Bug"?
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 21:09
Est-ce que ce serait possible que le _ dans le nom de la variable provoque un "Bug"?

Non, à moins que $Accept_Lang soit un mot réservé, mais je ne crois pas.
Côté config non plus je ne vois pas.

En plus je viens de faire le test pour dire le moins de bêtise possible : ça marche sans pb chez moi

C'est particulièrement bizarre ton affaire.
Qu'est ce que ça dit en remplaçant $Accept_Lang par :
- $accept_lang
- $machin_bidule
Quelle est ta version de PHP ?
Sur quel serveur es tu ?
As tu la possibilité de tester sur un autre serveur ?

Cordialement,

Kohntark -
0
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010
10 nov. 2009 à 21:52
Tu avais raison ton code ne genère aucune erreur mais je ne comprend pas le var dump ni son interet. Pas tout compris sur le site php?

j'utilise wamp en local avec apache 2.2.8 et php 5.2.6

Par contre j'ai quand même des erreurs dés que j'ai un _ dans le nom de la variable

Je le supprimérai
0
agparchitecture Messages postés 88 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 7 novembre 2010
10 nov. 2009 à 22:33
Je ne sais pas ce qui c'est passé, mon PC a coupé suite surchauffe. Redemmarage et plus de problème???

windows XP
Je viens d'essayer avec notepad++, blocNote plus de problème. A ce propos existe-t-il ieux que notepad++?

Erreur plus en avant dans le script surement. il commence à se faire tard
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
10 nov. 2009 à 22:51
il se fait tard effectivement. Heureux de voir ton "pb" résolu.

existe-t-il ieux que notepad++?

Je serai tenté de répondre : chacun ses goûts !
Perso je n'ai jamais trouvé le programme idéal.
J'utilise actuellement PsPad, qui est un éditeur très puissant et agréable à utiliser, et l'IDE NetBeans qui, (of course), propose des fonctionnalités plus poussées côté programmation, mais pêche côté éditeur.
Bref, les 2 sont complémentaires.

Bonne continuation,

Kohntark -
0
Rejoignez-nous