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 :

Question sûrement très bête.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Points : 79
    Points
    79
    Par défaut Question sûrement très bête.
    Bonjour,

    Alors voilà, j'ai trouvé ce bout de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $caracteres = "123ABCDE456FGHIJKLMNO789PQRSTUVWXYZ012abcde345fghijklmn678opqrstu90vwxyz";
    				$chaine = "";
    				for ($i=0;$i<=8;$i++){
    					$chaine.=substr($caracteres,(rand()%(strlen($caracteres))),1);
    				}
    Pas de soucis, je le comprends parfaitement, il va me générer une chaine de 8 caractères composés d'éléments aléatoire du string $caracteres.

    Ma question porte sur ce morceau-là, et fais sûrement partie des base de la programmation php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rand()%(strlen($caracteres))
    Personnellement, j'aurais fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rand(1,strlen($caracteres))
    Je ne comprends pas la signification de ce "%".

    Quelqu'un pour m'expliquer ?

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour,

    Le %, ca veut dire modulo.
    Il semble que ca soit un peut plus rapide, mais en fait, mathématiquement pas tout à fait exact...
    Tu peux lire l'explication de Patrick Daryll G. à cette pag http://fr.php.net/manual/fr/function.rand.php.

    Gillou.

  3. #3
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    J'ajouterai que mt_rand est plus performant.

    Gillou

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    il va me générer une chaine de 8 caractères
    for($i=0;$i<=8;$i++)

    Génère une chaine de 9 caractères.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Points : 79
    Points
    79
    Par défaut
    Ok, je commence à comprendre plus ou moins, mais ça reste quand même très flou. Je vais faire des recherches sur ce "modulo"
    Si quelqu'un sait expliquer clairement en deux mots, ça me va aussi !

  6. #6
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    A modulo B, c'est le reste de la division de A par B

    echo 21%5 affiche 1, parce que 5 x 4 + 1 = 21
    echo 16%5 affiche 1, parce que 5 x 3 + 1 = 16


    Gillou

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Cela fais une boucle sur 9 itérations, qui a chaque irtération va concaténer dans la variables $chaine, une lettre de la variable $caractere choisis dans sa position par le résultat du modulo(reste) (d'un nombre aléatoire divisé par 72).

    Est-ce plus clair......?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 106
    Points : 79
    Points
    79
    Par défaut
    Oui, j'avais bien compris le code

    C'était le modulo que je ne saisissais pas bien.

    Mais l'explication de LeGilou m'a bien éclairée

    Merci encore pour votre temps !!

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

Discussions similaires

  1. [Requêtes paramétrées] Question très bête mais
    Par GoustiFruit dans le forum Bases de données
    Réponses: 6
    Dernier message: 24/01/2012, 09h43
  2. question un peu bête
    Par r0d dans le forum C++
    Réponses: 10
    Dernier message: 30/06/2006, 11h40
  3. [VBA access 2000]problème surement très bête
    Par herendel dans le forum Access
    Réponses: 5
    Dernier message: 27/04/2006, 14h40
  4. Question "pas si bête" sur le protocole SNMP
    Par arsenik7 dans le forum Développement
    Réponses: 3
    Dernier message: 02/01/2006, 11h49
  5. Question très bête : récupérer la valeur de retour d'une fct
    Par pekka77 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/10/2005, 17h57

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