Partage
  • Partager sur Facebook
  • Partager sur Twitter

Function rand()

    19 novembre 2017 à 1:31:51

    Salut,

    Voilà je débute en php, et je m'amuse un peu avec quelque trucs.

    Hors j'ai un problème avec ceci: 

    $num= "" . rand(10, 99). "" . rand(A, Z). "" . rand(A, Z). "" . rand(10000, 99999);

    le rand(A, Z) ne marche pas, et j'aimerais savoir comment faire pour que celà marche.

    Merci beaucoup.

    • Partager sur Facebook
    • Partager sur Twitter
      19 novembre 2017 à 8:15:23

      Bonjour,

      Comme il est indiqué dans la documentation .... rand a besoin de 2 paramètres de type integer.

      http://php.net/manual/fr/function.rand.php

      Donc bien-sûr cela ne fonctionne pas avec A et Z.

      Une manière de s'en tirer c'est de convertir A et Z soit dans leur code ASCII soit entre 1 et 32. Mais bien-sûr si c'est pour établir ensuite une lettre il faut à nouveau reconvertir.

      exemple : A => 1 et Z => 32 si rand donne 3 alors il faut reconvertir en C.

      Avec le code ASCII il existe des fonctions en php. Par exemple : http://php.net/manual/fr/function.ord.php

      A+

      • Partager sur Facebook
      • Partager sur Twitter
        19 novembre 2017 à 10:45:23

        Nouveau code:


        private function randStr($length) {
        	   $allCharacters = "ABCDEFGHIJKLMNOPQRUSTUVWXYZ";
               $allCharacters = str_shuffle($allCharacters);	   
        	   $randomKey = substr($allCharacters,0,$length);
        		
        	   return $randomKey;
        		
        	}
        
        $numpassport = "" . rand(10, 99) . "" .  echo randStr(1) . "" . echo randStr(1) . "" . rand(10000, 99999);



        • Partager sur Facebook
        • Partager sur Twitter
          19 novembre 2017 à 12:07:46

          Bonjour,

          Tu ne peux pas concaténer une valeur en php avec un echo.

          • Partager sur Facebook
          • Partager sur Twitter
          Merci de signaler votre sujet résolu, cela nous évite des pages de lecture inutile pour arriver au bout de 15 réponses sur la dernière qui dit "merci problème résolut!"
            19 novembre 2017 à 12:27:45

            La concaténation c'est sans echo comme dit ci-dessus.

            A quoi sert de mettre une double quote en début de la chaine $numpassport.

            Me semble un peu tiré par les cheveux pour juste obtenir une lettre pseudo aléatoirement. L'utilisation de ord et chr me semblait plus naturel en utilisant la fonction rand.

            D'ailleurs par rapport à la question initiale, la fonction rand du php ne sert plus ?

            A+

            • Partager sur Facebook
            • Partager sur Twitter
              19 novembre 2017 à 13:28:15

              chr(rand(ord("a"),ord("z")))
              chr(rand(ord("A"),ord("Z")))

              ou

              function randomAlphaStrings($length=1){
              		//Definition de la liste des lettres
                      $alphaList = array_merge(range("a","z"),range("A","Z"));
              		$output = ""; //Definition de la variable stockage des valeurs de sorties de fonction
              		
                         //Condition de verification du format de l'argument
              		if(!is_int($length)){
              			trigger_error(__FUNCTION__ . "() L'argument \$length doit être un entier (int)",E_USER_WARNING);
              			$output = false;
              		}else if($length<1) {
              			trigger_error(__FUNCTION__ . "() L'argument \$length doit être superieur à 0",E_USER_WARNING);
              			$output = false;
              		}
              		
                         //Bouclage et génération de la lettre aleatoirement
              		for($i=0;$i<$length;$i++)
              			$output .= $alphaList[mt_rand(0,count($alphaList))]; //Prise d'une lettre aléatoirement dans la liste de lettres et stockage dans la variable des valeurs de sortie
              
              		return $output; //Retourne les resulats sous forme string
              }



              -
              Edité par Infoxp 19 novembre 2017 à 13:30:53

              • Partager sur Facebook
              • Partager sur Twitter
              Infoxp ici depuis 2007

              Function rand()

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown