fonction rand sur un tableau

Eléphanteau du PHP | 10 Messages

09 oct. 2008, 15:16

Sa solution affichera la même chose que ce que j'ai actuellement, à savoir, chaque "mot fixe" une seul est unique fois.

Ce que je voudrais, c'est que cela affiche les mots fixes le nombre de fois que le chiffre contenu dans $pourcent. :roll:

ViPHP
ViPHP | 4674 Messages

09 oct. 2008, 15:22

Bah ici, j'ai créé le tableau manuellement. Génère le dynamiquement :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 3607 Messages

09 oct. 2008, 15:27

Alors il suffit de modifier la fin de son script, à savoir:
/**
 * Nos mots donnés.
 */
$given = array(
    'phpfrance',
    'super',
    'génial',
    'top',
    'déchire'
);

/**
 * On ajoute nos mots à ceux du langage.
  */
$result = array_merge($language, $given);

/**
 * On mélange le tout …
 */
shuffle($result);

/**
 * Et on reconstruit la phrase.
 */
var_dump(implode(' ', $result)); 
en
/**
 * Nos mots donnés.
 */
$given = array(
    'phpfrance',
    'super',
    'génial',
    'top',
    'déchire'
);

/**
*  Le tableau de mots proportionnel à leur pourcentage
*/
//nombre de mots à prendre dans le "dictionnaire"
$pourcent = round(count($language)*0.05); 
$dico=array();
for($i=0;$i<$pourcent;$i++){
    $dico[]=$given[array_rand($given)];
}

/**
 * On ajoute nos mots à ceux du langage.
  */
$result = array_merge($language, $dico);

/**
 * On mélange le tout …
 */
shuffle($result);

/**
 * Et on reconstruit la phrase.
 */
var_dump(implode(' ', $result)); 
Et hop!
attention, code non testé, mais l'idée est là ;)

edit:
Bah ici, j'ai créé le tableau manuellement. Génère le dynamiquement Smile.
ben voilà, à peu près comme ça ;)

ViPHP
ViPHP | 4674 Messages

09 oct. 2008, 15:35

Ton exemple ne produira aucun résultat car tu incrémentes ton $i de 1, alors qu'on travaille sur un nombre inférieur à 1.

Laisse faire notre ami, la solution n'est pas compliquée :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 3607 Messages

09 oct. 2008, 15:43

mais euh....
pardon :oops: je ferais plus (un petit x 100 et ça marche non?)

Eléphanteau du PHP | 10 Messages

09 oct. 2008, 15:46

Hello,

Alors je m'étais d'abord lancé dans une boucle while...pour ajouter les mots dans le tableau...

Puis après avoir vu le post de jojolapine, cela m'a bien aidé!

Il y avait 2 ou 3 choses que j'ai corrigées mais cela fonctionne maintenant...

Encore un grand merci à vous pour votre aide: je n'aurai jamais pensé réussir à aller aussi loin...Comme quoi avec de la volonté et un petit coup de pouce, on arrive à bout de tout!

Voici le code final:
<?php

$alphabet = range('a', 'z'); 
$language = null; 
$texte = null;
$textefinal = null;

//On génère entre 100 et 500 mots
for($e = 0, $words = rand(100, 500); $e < $words; $e++) 
{ 
    //Un mot contient entre 2 et 10 caracteres
    for($i = 0, $length = rand(2, 10); $i < $length; $i++)  
        $language .= $alphabet[array_rand($alphabet)]; 

    $language .= ' '; 
} 

$tableau = array(
    '<font color=red><b>soleil</b></font>',
    '<font color=red><b>argent</b></font>',
    '<font color=red><b>partir vacances</b></font>',
     ); 

$pourcent = round($words*0.05); 

$dico=array();

for($fix=0;$fix<$pourcent;$fix++)
{
    $dico[]=$tableau[array_rand($tableau)];
} 

// On explose l'array pour récupérer les mots
$texteEntier_explode = explode(' ', trim($language)); 

//On fusionne les 2 tableaux
$list = array_merge($texteEntier_explode, $dico);

// On mélange les mots
shuffle($list); 

// On recoupe chaque mot séparé d'un espace
$texteFinal = implode(' ', $list); 

echo "$texteFinal";

?> 

ViPHP
ViPHP | 4674 Messages

09 oct. 2008, 15:53

Maintenant, tu vas juste m'enlever ses balises <font> et <b> que tu vas remplacer par un style CSS et <strong>, tu seras gentil ;-).
Tu penseras aussi à mettre le sujet en résolu.

Et bravo :).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphanteau du PHP | 10 Messages

09 oct. 2008, 16:04

Ok je change ca :D

En tout cas merci encore...!