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 :

[Algo] Une question d'intervalle


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut [Algo] Une question d'intervalle
    Bonjour à tous,
    J'ai deux variables begin et end qui contiennent chacune un "nombre".
    par exemple
    begin = 123 et end = 126
    Je souhaite obtenir un tableau qui contient :
    ["123" => "123", "124" => "124", "125" => "125", "126" => "126]
    Je le fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $y = 0;
    for ($i=$begin ; $i<=end ; $i++) {
          $retour[begin + $y] = begin + $y;
          $y++;
    }
    Donc pour des nombres comme 123 tout va bien ...
    Malheureusement je peux aussi avoir des nombres comme 012 et 016, auquel cas je souhaite obtenir 012, 013, 014, 015, 016 ... Mais avec ma technique j'obtiens 12, 13, 14, 15, 16 ...
    Comment faire ?
    jb

  2. #2
    NoT
    NoT est déconnecté
    Membre actif
    Profil pro
    Inscrit en
    Février 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 237
    Points : 280
    Points
    280
    Par défaut
    Salut,

    012,013,014, etc.. pour moi ce sont pas des nombres mais des chaines de caractères.

    Il faut que tu passes par une fonction qui converti ton nombre 12 en une chaine avec le 0 devant.

  3. #3
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    soit dis en passant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i=$begin ; $i<=$end ; $i++) {
          $retour[$i] = $i;
    }
    devrait suffir

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    number_format va te permettre d'avoir ton 0 devant

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par titoumimi
    number_format va te permettre d'avoir ton 0 devant
    sprintf aussi. Exemple où l'on admet que ces nombres doivent tenir sur 3 chiffres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $begin = 12;
    $end = 16;
    $retour = array();
    for ($i = $begin; $i <= $end; $i++) {
         $str = sprintf('%03d', $i);
         $retour[$str] = $str;
    }
    print_r($retour);

    Julp.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut
    Merci à tous.
    Sprintf semble ne pas me convenir, puisque mes "nombres" peuvent contenir plusieurs chiffres, et je n'ai pas la maîtrise a priori de leur "taille".
    Quant à number_format, j'ai pas bien compris comment cette fontion pouvait me rendre service.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut
    Citation Envoyé par RideKick
    soit dis en passant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for ($i=$begin ; $i<=$end ; $i++) {
          $retour[$i] = $i;
    }
    devrait suffir
    Evidemment !
    Merci à toi, je n'y avais pas pensé

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 290
    Points : 137
    Points
    137
    Par défaut Résolu ;) !
    Finalement je récupère la taille de la chaine de caractère et je complète avec des zéros avec str_pad :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     $taille =  strlen($row['begin']);
        for ($i=$row['begin'] ; $i<=$row['end'] ; $i++) {
          $str = str_pad($i, $taille, "0", STR_PAD_LEFT);
          $retour[$str] = $str;
        }

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

Discussions similaires

  1. Encore une question licence
    Par Neilos dans le forum C++Builder
    Réponses: 4
    Dernier message: 27/01/2005, 09h48
  2. Encore une question sur malloc
    Par IG88 dans le forum C
    Réponses: 5
    Dernier message: 23/06/2004, 15h35
  3. [.NET] Une question technique a propos du mode asynchrone
    Par nicknolt dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 08/06/2004, 10h07
  4. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

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