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 :

[POO] Problème de test suite à un explode()


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut [POO] Problème de test suite à un explode()
    Si quelqu'un peut m'aider à résoudre un petit problème avec explode()
    je l'en remercie d'avance.

    j'ai une chaine de caractères que je coupe par rapport aux espaces, chaque morceau correspond donc à un mot.

    voici mon code, j'explique ensuite mon souci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    	$txt = 'marcher';
    // pour le cas du problème la chaine ne contient qu'un seul mot..
     
    	$element = explode(' ' , $txt, 2);
    // ici la chaine est divisée en deux au premier espace (premier mot et le reste).
     
    	$verbe = $element[0];
     
    	if($verbe == "marcher")
    	{
    		$objet = $element[1];
     
    		if($objet == "à l'est")
    		{
    			echo $verbe . ' ' . $objet;
    		}
    		else
    		{
    			echo 'Marcher où ?';
    		}
    	}
    	else { echo 'Non... Impossible.'; }
    mon problème est que je voudrais que mon script si il n'y a pas d'objet ($element[1]), ne renvoit pas d'erreur parce que $element[1] n'existe pas, mais seulement "marcher où ?".

    lorsque seul le mot "marcher" est écrit, la question "marcher où" devrait s'afficher.
    or ceci s'affiche suivi de "marcher où ?" :

    Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\sequences\la petite chambre 2.php on line 27
    Marcher où ?

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Je comprends pas pourquoi tu testes pas ton element[1] avant de faire toute opération . Un petit test devrait suffir je pense. Surtout que ton warning vient du fait que ton objet qui est element n'existe pas (enfin je suis pas très sur sur ce coup avec le fatigue)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    le warning vient bien du fait que element[1] n'existe pas, c'est certain.

    pour ta solution, j'y ai pensé, seulement je ne sais pas comment m'y prendre.

    j'ai essayé en créant une variable $nombre = count($element);
    afin de mettre un if($nombre >= 1) { suite du script pour $objet }
    mais je n'ai pas réussi...

    qu'elle méthode tu pourrais envisager ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    bon, en attendant j'ai trouvé une "roue de secours" comme méthode :

    je rajoute un espace et quand ca "explose" ca supprime l'éspace de l'élément, voir dans ce cas, ca fait un 2eme élément vide, ce qui ne génère même pas l'erreur de script !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    	$txt = $txt . " ";
    	$element = (explode(" ", $txt, 2));
     
    	if($element[0] == "marcher")
    	{
    		if($element[1] == "")
    		{
    			echo "Marcher où ?";
    		}
    		if($element[1] == "à l'est")
    		{
    			echo $element[0] . " " . $element[1];
    		}
    	}
    	else { echo "Non... Impossible."; }

    si tu as une solution plus adéquate ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    pff je viens de me rendre compte que avec cette modification :

    si $txt = "marcher" ca affiche bien "marcher où ?"
    si $txt = nimp ca affiche "non... impossible"
    mais
    si $txt = "marcher à l'est" ca ne marche plus

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    bon voilà, en fait c'est qu'il manquait un petit détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     
    	$txt = $txt . " ";
    	$element = (explode(" ", $txt, 2));
     
    	if($element[0] == "marcher")
    	{
    		if($element[1] == "")
    		{
    			echo "Marcher où ?";
    		}
    		if($element[1] == "à l'est ")
     
    // il manquait l'espace que j'ai rajouté dans la chaine de la condition.
    		{
    			echo "ok";
    		}
    	}
    	else { echo "Non... Impossible."; }
    }

    mais bon, j'aimerai éviter de roublarder dans mon script alors j'attends que quelqu'un me propose mieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP-JS] Problème php-javascript (suite)
    Par nicoaix dans le forum Langage
    Réponses: 4
    Dernier message: 21/12/2005, 10h47
  2. [Conception] Problème de test dans une boucle while
    Par Cyrius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/11/2005, 18h07
  3. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29
  4. [POO] Problème lors de l'appel d'une propriété d'un objet.
    Par akecoocoo dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 08h51
  5. Réponses: 4
    Dernier message: 16/06/2005, 15h37

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