Probleme de reset sur un array () [Résolu]

Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
- 10 nov. 2009 à 16:15 - Dernière réponse :
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
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?
Afficher la suite 

Votre réponse

11 réponses

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



Kohntark -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de kohntark
Meilleure réponse
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
10 nov. 2009 à 22:18
3
Merci
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 -

Merci kohntark 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de kohntark
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
10 nov. 2009 à 16:58
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
10 nov. 2009 à 17:42
0
Merci
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???
Commenter la réponse de agparchitecture
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
10 nov. 2009 à 20:27
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
10 nov. 2009 à 20:39
0
Merci
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
Commenter la réponse de agparchitecture
Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
10 nov. 2009 à 20:51
0
Merci
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"?
Commenter la réponse de agparchitecture
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
10 nov. 2009 à 21:09
0
Merci
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 -
Commenter la réponse de kohntark
Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
10 nov. 2009 à 21:52
0
Merci
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
Commenter la réponse de agparchitecture
Messages postés
88
Date d'inscription
jeudi 9 mars 2006
Dernière intervention
7 novembre 2010
10 nov. 2009 à 22:33
0
Merci
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
Commenter la réponse de agparchitecture
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Dernière intervention
27 avril 2012
10 nov. 2009 à 22:51
0
Merci
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 -
Commenter la réponse de kohntark

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.