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 :

Incrémenter une variable


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut Incrémenter une variable
    salut,
    j'ai une chaine de caracteres comme celle la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (1 and 2 or (3 and 5) and 6)
    et je veux une fonction ou bien methode php (un algo) pour incrementer une variable $j a chaque fois je trouve "(" et pour tout les nombre existent entre meme parenthese je veux donner meme ($j)..
    je m'explique :
    initialement $j = 2 (par exemple)
    je vais parcourir ma chaine de caracteres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (1 and 2 or (3 and 5) and 6)
    et pour 1 and 2 and 6 => $j va prendre 3 ($j=3)
    par contre pour 3 et 5 => $j devient 4 ($j = 4)..
    oui je sais quelle est compliqué...

    merci de m'aider

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    il suffit de faire une boucle pour chaque caractère :
    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
    24
    25
    $t = '(1 and 2 or (3 and 5) and 6)';
     
    $j = 2;
     
    echo '<table border="1">';
     
    foreach (range(0, mb_strlen($t, 'UTF-8') - 1) as $index) {
     
        switch ($t[$index]) {
            case '(' : 
                $j++;
                break;
     
            case ')' : 
                $j--;
                break;
     
            default : 
                break;
        }
     
        echo "<tr><td>{$t[$index]}</td><td>$j</td>";
    }
     
    echo '</table>';

  3. #3
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    salut
    merci de votre reponse

    en fai j'ai une zone de text dans lequelle l'utilisateur peut saisi quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (1 and 2 or (3 and 5) and 6)
    puis j'ai utliser le regex pour convertir cette chaine de caractere en tableau et apres je parcourir ce tableau et a chaque fois que je trouve "(" j'incremente une variable $j...
    j'ai tenté ça mais je suis pas sur
    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
     foreach ($tabChaine[0] as $index) {
     
                    switch ($tabChaine[0][$index]) {
                        case '(' :
                            $maxGrpeCritere++;
                            $critereRecherche->setGrpe($maxGrpeCritere);
                            break;
     
                        case ')' :
                           $maxGrpeCritere--;
                           $critereRecherche->setGrpe($maxGrpeCritere);
                            break;
     
                        default :
                            break;
                    }
                }
    merci de m'aider

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par moukit233 Voir le message
    merci de m'aider
    qu'est ce qui ne fonctionne pas ?

  5. #5
    Membre régulier Avatar de moukit233
    Développeur informatique
    Inscrit en
    Mai 2009
    Messages
    240
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2009
    Messages : 240
    Points : 123
    Points
    123
    Par défaut
    en fait j'ai cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for ($j=0; $j < count($tabChaine[0]); $j++) {               
                   if ($tabChaine[0][$j] == $nombre+1) {
                        $object = Package_Model_Classe::
                                                    getById($id);
                        $object->setValeur($numGrpe);  
                    }else if ($tabChaine[0][$j] == "(") {
     
                        $numGrpe = $maxGrpeCritere + 1;
                    } else if ($tabChaine[0][$j] == ")") {
                        $numGrpe = $numGrpe + 1;
                    }                                                
                }
    $tabChaine[0] est un tableau qui contient une chaine de caractere comme celle ci : (1 and 2) or 3
    et pour des raison de perofrmance je veux utiliser les switch case ,
    mais je ne sais pas comment je vais faire et surtout pour la partie $nombre+1
    N.B : $nombre est une variable qui increment.
    merci de m'aider

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 74
    Points : 81
    Points
    81
    Par défaut
    Bonsoir,

    Au niveau des performances, il faut savoir quand même que les if/elseif et les switch case sont à peu près équivalant avec un léger avantage aux if/elseif.

    Donc si c'est pour des histoires de performance tu ferais mieux de conserver tes if

    Recherche rapide sur google:

    http://www.fluffycat.com/PHP-Design-...-if-VS-switch/

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/12/2008, 22h33
  2. incrémenter une variable à chaque clique sur un lien
    Par Piccolo_son dans le forum Langage
    Réponses: 7
    Dernier message: 17/12/2007, 21h56
  3. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  4. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  5. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19

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