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 :

Caster une chaîne en sa valeur entière


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut Caster une chaîne en sa valeur entière
    Bonjour !

    Voilà, j'ai importer dans une base de donnée un fichier csv.
    Certains des champs contiennent des valeurs de ce type là par exemple : "3+2+5" (les mêmes champs peuvent également contenir un int unique).
    J'ai importer ça en format text car j'ai besoin de garder cette information telle quelle.

    Cependant pour une autre utilisation, j'aurais besoin d'obtenir une variable php qui serait le résultat de cette opération. Dans l'exemple précédent, il faudrait que je puisse obtenir 10.

    Comment serait-il possible de réaliser cela svp ?
    Merci !

  2. #2
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    Bonjour Dakuan



    intval a tester si il peut calculer
    sinon
    eval ?

  3. #3
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut
    Merci !

    Alors avec intval ça ne fonctionne pas.
    Quant à eval je n'ai pas réussi à le tester. Il me retourne une erreur dans la syntaxe apparemment mais je ne vois pas où j'ai pu mal faire.

  4. #4
    Membre actif Avatar de chtipitou
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 214
    Points
    214
    Par défaut
    dans eval tu execute du code php

    donc je ferai comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $inconnue = "3+2+5";
    eval ("$result = $inconnue+0;");
    en faisant g aussi pense a que tu n'a peut etre pas besoin du eval

    essaye comme ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $inconnue = "3+2+5";
    $result = $inconnue+0;

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut
    Lol !
    Il se trouve que j'ai tester le p'tit bricolage en premier lieu, en multipliant par 1 puis en ajoutant 0 ... Les deux méthodes n'ont pas permis de résoudre ce soucis ^^'

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    essaie ça (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $instruction = '1+2+3';
    $resultat = eval('return '.$instruction.';');

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut
    C'est simplement génial !
    Le "$resultat = eval('return '.$instruction.';');" marche parfaitement !
    Merci beaucoup !!

  8. #8
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut
    Bonjour !

    Voilà, après pas mal d'utilisation de la méthode que l'on m'avait fourni ci-dessus, je me suis aperçu que pour certains cas, un p'tit soucis se posait ...

    En fait, lorsque $instruction est un string comportant un espace, ça retourne une erreur au niveau du eval, qui devient invalide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected T_STRING in C:\wamp\www\site_transf\transfert.php(92) : eval()'d code on line 1
    Du coup j'ai essayé de mettre quelque chose de cette forme là à la place :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat = eval('return \''.$instruction.'\';');
    Cette fois-ci l'erreur n'est plus ... mais retourner un string bah ... ça donne le string lui-même ^^
    Donc du coup quand j'ai à faire à une instruction du type '1+2+3' par exemple, ça me retourne '1+2+3' (alors que j'voudrais bien obtenir 6).

    Du coup je me retrouve un peu coincé, surtout que je ne suis pas censé connaitre ce qu'il y a dans le $instruction.

    Enfin pas vraiment ...
    En fait ça peut prendre plusieurs type de format :
    - '1' ou '2' ou ...
    - '2+2' ou '3+3+2' ou ...
    - un string quelconque.

    Dans le premier cas, inutile de faire un eval, la valeur me convient.
    Dans le second cas, il faudrait que cela me retourne le résultat de l'opération.
    Dans le troisième cas, il faudrait simplement que je sache que je me trouve dans le troisième cas, car il s'agirait d'un cas particuliers que je devrais traiter à part.

    Voilà voilà, j'espère que vous pourrez à nouveau m'aider !
    Merci.

    EDIT: un '?' dans la chaine de caractère pose aussi un soucis apparemment.

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 819
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 819
    Points : 5 638
    Points
    5 638
    Par défaut
    Pourquoi ne pas tester avec des expressions régulière ce que tu as.

    J'explique :
    Dans ton permier cas, tu n'as que des chiffres, tu créer un expression régulière pour tester s'il n'y a que des chiffre.
    Dans ton deuxième cas, tu n'as que des chiffres séparés par des "+", tu crée une expression régulière pour tester si c'est le cas
    Dans ton troisième cas, tu peux avoir n'importe quoi donc tu teste si ce n'est PAS l'un des 2 premiers cas en te servant des 2 expressions régulières

  10. #10
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 89
    Points : 44
    Points
    44
    Par défaut
    Hum hum ...
    Oui oui en effet, c'est pas idiot ça ^^

    M'en vais étudier les expressions régulières

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/05/2006, 17h48
  2. radiobutton erreur n'est pas une valeur entière correcte
    Par pierrot67 dans le forum Bases de données
    Réponses: 3
    Dernier message: 12/03/2006, 22h27
  3. comment vérifier la présence d'une valeur ds une chaîne ?
    Par lidouka dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/03/2006, 08h01
  4. Réponses: 5
    Dernier message: 08/03/2006, 23h20
  5. erreur '' n'est pas une valeur entière correcte
    Par ffxlenoir dans le forum Langage
    Réponses: 5
    Dernier message: 02/12/2005, 14h57

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