IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] retours de is_array(), isset() et count() incohérents


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut [Tableaux] retours de is_array(), isset() et count() incohérents
    Bonjour,

    soit cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getListKeys(){
    	if(is_array($this->ResultatRequete) && isset($this->ResultatRequete[$this->CurrentRow])){
    		while(count($this->ResultatRequete[$this->CurrentRow]) == 0) {
    			$this->CurrentRow++;
    		}
    		$IdRow = $this->CurrentRow;
    		$this->CurrentRow = 0;
    		return array_keys($this->ResultatRequete[$IdRow]);
    	}
    	else return false;
    }
    J'ai un plantage sur un accès BdD sur "$this->CurrentRow++;" qui incrémente à l'infini, le test de mon while étant toujours vrai (count == 0).

    Or les tests juste avant dans le if son censés vérifier que mon Array "$this->ResultatRequete" contient bien qqch...

    Est-ce qu'il y aurait une subtilité qui m'écahappe dans une de ces trois fonctions : is_array(), isset() et count() ??
    Qu'est-ce que je fais mal?


    Merci de votre aide,
    klod-

  2. #2
    Membre actif
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Points : 271
    Points
    271
    Par défaut
    Regarde comment fonctionne isset sur la doc, car meme une variable vide peut renvoyer true, il suffit qu'elle soit définie.

    Je te conseille simplement de faire un (si c'est bien une chaine) if $this->ResultatRequete[$this->CurrentRow]!='' plutot

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La condition du while est totalement fausse telle quelle car le prochain emplacement du tableau n'est jamais vérifié comme étant existant (voir autres) donc PHP vous renvoie une valeur NULL puis count renvoie dans ce cas zéro. De plus, dans le cas d'un tableau numériquement indexé, et de manière générale, rien ne peut vous assurer que les indices sont contigus (unset laissera des trous).

    Normalement PHP devrait générer des erreurs de type notice pour les indices inexistants ...

Discussions similaires

  1. [Tableaux] Retour chariot pour un code HTML propre
    Par beastman007 dans le forum Langage
    Réponses: 10
    Dernier message: 09/03/2006, 17h43
  2. Réponses: 4
    Dernier message: 16/02/2006, 10h40
  3. [Tableaux] Retour Chariot dans une boucle
    Par tchoukapi dans le forum Langage
    Réponses: 3
    Dernier message: 07/11/2005, 14h45
  4. [Tableaux] Retour non conforme
    Par Mister Nono dans le forum Langage
    Réponses: 3
    Dernier message: 03/11/2005, 12h06
  5. [Tableaux] la difference entre isset et empty
    Par ghita269 dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2005, 01h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo