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 :

Additionner des nombres entiers dans une chaine de caractères


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Additionner des nombres entiers dans une chaine de caractères
    Bonjour,

    Je cherche à "calculer" une expression simple à partir d'une chaine de caractère.

    J'ai une chaine de caractère du genre "1,25,8" ou "1+25+8" que j'extrait d'un champ SQL, je voudrais afficher le résultat "54" (sous forme de texte ou d'entier)

    Y aurait t-il une fonction php simple pour faire cela ? (ou peut-être une fonction MySQL)

    Merci

    (je débute !)

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Deux possibilités:
    - soit tu as stocké en base l'opération à effectuer (genre 1+25+8) Dans ce cas tu as "juste" à récupérer le contenu du champ et à appliquer eval dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     //on récupère '1+25+8' dans $calc depuis la base
    eval( '\$result = '.$calc.';' );
    echo $result;
    - soit tu as juste stocké les valeurs en base (genre 1,25,8) et tu sais quelle opération tu veux effectuer : Dans ce cas, tu extrait les valeurs à partir du champ récupéré (par exemple avec un explode) puis tu effectues ton opération sur les éléments du tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     //on récupère '1,25,8' dans $calc depuis la base
    $vals = explode(';', $calc);
    $result = array_sum($vals); //array_sum renvoie la somme des valeurs du tableau
    echo $result;
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Et en une ligne qui gère les deux cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval( '$result = ' . str_replace( ',', '+', $calc ) . ';' );

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/05/2015, 12h21
  2. Réponses: 4
    Dernier message: 19/12/2011, 18h16
  3. Réponses: 2
    Dernier message: 28/03/2008, 18h24
  4. le nombre d’occurrences dans une chaine de caractére
    Par adilo dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 28/06/2006, 12h24
  5. Réponses: 10
    Dernier message: 10/10/2005, 20h46

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