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] Notice: Undefined offset


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 39
    Points
    39
    Par défaut [Tableaux] Notice: Undefined offset
    Bonjour,

    j'ai une notice ->

    Notice: Indefined offset: 0 in...

    avec : $tab_matchv[$p] .= $rv;
    $p etant une variable de compteur.

    Pourquoi ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    tu as fait echo $p pour voir ce qu'elle contient ?

  3. #3
    Nouveau membre du Club Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Non et je ne peux pas car j'ai le ftp occupé,

    $p est par defaut initialiser a 0
    $tab_matchv est declaré en tant que tableau
    $rv peut eventuellement etre vide

    C'est quoi cette notice ?

  4. #4
    Membre expérimenté
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Points : 1 341
    Points
    1 341
    Par défaut
    Typiquement, tu veux lire un case de ton tableau qui n'existe pas.
    Vu le petit bout de code que tu as mis, j'aurai tendance a penser que, dans la mesure ou tu concatène, la premiere fois, $tab_matchv[$p] n'est pas renseigné.
    Cela ne fait pas planter parce que php initialise tout seul par défaut a vide, mais ca génère une notice, parce que c'est mal ;-)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Tu as besoin de ftp pour tester ? tu test pas en local ?

    Bah je sais pas ce que contient $p, apparemment il est indéfini, pour vérifier faut faire un

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Donne plus de code

  7. #7
    Nouveau membre du Club Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Donne plus de code
    $p est par defaut initialiser a 0
    $tab_matchv est declaré en tant que tableau vide
    $rv peut eventuellement etre vide


    Citation Envoyé par Rakken Voir le message
    Typiquement, tu veux lire un case de ton tableau qui n'existe pas.
    Vu le petit bout de code que tu as mis, j'aurai tendance a penser que, dans la mesure ou tu concatène, la premiere fois, $tab_matchv[$p] n'est pas renseigné.
    Cela ne fait pas planter parce que php initialise tout seul par défaut a vide, mais ca génère une notice, parce que c'est mal ;-)

    Tu veux dire qu'en initialisant le tableau avant avec 1 élément fictif, cela devrait enlever la notice ?

    tab_matchv = array("0");
    $p=0;
    $tab_matchv[$p] .= $rv;

    ??

  8. #8
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Tu veux dire qu'en initialisant le tableau avant avec 1 élément fictif, cela devrait enlever la notice ?

    tab_matchv = array("0");
    $p=0;
    $tab_matchv[$p] .= $rv;

    ??
    Oui il faut que l'index corresponde à un élement intialisé.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Je pense que l'initialiser à chaîne vide devrais suffire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab_matchv = array("");
    $p=0;
    $tab_matchv[$p] .= $rv;
    Mais pourquoi un tableau s'il contient qu'une chaîne ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Il manque un $
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab_matchv = array("");
    $p=0;
    $tab_matchv[$p] .= $rv;

  11. #11
    Nouveau membre du Club Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Je pense que l'initialiser à chaîne vide devrais suffire
    Visiblement pas pour le serveur sur lequel se trouve le script

    Citation Envoyé par Eric93 Voir le message
    Mais pourquoi un tableau s'il contient qu'une chaîne ?
    quelques boucles de trop ^^

    Citation Envoyé par makmaoui Voir le message
    Oui il faut que l'index corresponde à un élement intialisé.
    Merci, j'aime bien comprendre les problèmes dans leur integralité et arreter d'enlever les Notices avec php.ini

  12. #12
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Sinon tu tests si ton élément existe avant de l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    $tab_matchv = array();
    $p=0;
     
    if(!isset($tab_matchv[$p]))
      $tab_matchv[$p] = '';
     
    $tab_matchv[$p] .= $rv;

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    Je pense que l'initialiser à chaîne vide devrais suffire
    Visiblement pas pour le serveur sur lequel se trouve le script
    Je suis perplexe, as tu testé avec une chaîne vide ? Je vois pas pourquoi il faudrais un caractère.

    $rv peut eventuellement etre vide
    C'est à dire ? qu'appelle tu vide ? est tu sur qu'il est bien initialisé aussi (chaîne ou chaîne vide) ?

  14. #14
    Nouveau membre du Club Avatar de KOogar
    Inscrit en
    Septembre 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 46
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par Eric93 Voir le message
    Je suis perplexe
    je t'en prie ^^

    Citation Envoyé par Eric93 Voir le message
    as tu testé avec une chaîne vide ?
    non, je déteste tester. je préfère comprendre en premier et appliquer ensuite.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 424
    Points : 382
    Points
    382
    Par défaut
    MdR, mais faut tester pour comprendre, si t'as pas tester, comment peux tu dire que ya un problème ?

  16. #16
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    non, je déteste tester. je préfère comprendre en premier et appliquer ensuite.
    je pense pas que tu ais compris le sens de "tester"...

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 81
    Points : 92
    Points
    92
    Par défaut
    Et si tu nous passais le code avec ta boucle autour, si t'es dans une boucle, tu fais peut etre ta boucle trop loin

    Si tu as un tableau $Tableau qui a un sizeof($Tableau) =5, tu fais une boucle allant de 0 a 4 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
      for ($x=0; $x<sizeof($Tableau); $x++) 
         echo $Tableau[$x];
    ?>
    Et si ta boucle tu la fait aller jusqu'à 5, bah ya le problème que tu as (si c'est bien ton cas )

Discussions similaires

  1. [MySQL] Notice: Undefined offset
    Par gaetanc15 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/04/2009, 16h16
  2. [Tableaux] Notice: Undefined offset: 5 in
    Par fast462 dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2007, 10h08
  3. [Tableaux] AroundMe : Undefined offset
    Par tiboleo dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2007, 10h46
  4. erreur: "Notice: Undefined offset:"
    Par Sh1v3r dans le forum Langage
    Réponses: 2
    Dernier message: 17/06/2006, 22h48
  5. Réponses: 9
    Dernier message: 01/05/2006, 00h02

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