Avatar billede thulstrup Nybegynder
08. november 2001 - 16:11 Der er 5 kommentarer og
2 løsninger

ord i tilfældig rækkefølge

Jeg har følgende kode som jeg bruger til at hente en tilfældig linie ind fra en tekstfil og skrive den:

// sæt filnavn for sætninger.txt
$sætninger = \"sætninger.txt\";

// få antal linier
$temp = file(\"sætninger.txt\");
$antalLinier = count($temp);

// vælg tilfældigt nummer mellem 0 og $n
$tilfældig = rand(0,$antalLinier-1);

print($temp[$tilfældig]);

Jeg vil gerne have at PHP bryder ordene i den valgte linie op og skrive dem i tilfældig rækkefølge.
Avatar billede fri-hash Nybegynder
08. november 2001 - 16:20 #1
$linie=$temp[$tilfældig]; // istedet for print
$linie=explode(\" \", $linie);
// $linie er nu et array bestående af enkeltord
// $linie[0] er første ord, osv
$antalord=sizeof($linie); //antal elementer i arrayet

det er da lidt at arbejde videre på
Avatar billede fri-hash Nybegynder
08. november 2001 - 16:22 #2
det tilfældige element fra arrayet har du styr på, så skal du bare lave et nyt array eller lignende til at holde styr på hvilke ord der er skrevet, så de ikke skrives mere end en gang hver
Avatar billede jakoba Nybegynder
08. november 2001 - 16:30 #3

function randomize ( $str ) {
    $ar = explode( \" \", $str );
    for ( $i=$ar.length()-1; i>0; i-- ) {
        $tmp = $ar[ $j=rand(0,$i) ];
        $ar[$j] = $ar[$i];
        $ar[$i] = $tmp;
    }
    return implode( \" \", $ar );
}

for at skrive en randomiseret streng siger du

$linie = freads($filepointer, 4095 ); //læs linien
echo randomize( $linie );

mvh JakobA
Avatar billede jakoba Nybegynder
08. november 2001 - 16:34 #4
Ups.
\'læs en linie\' er fgets(), ikke freads()
Avatar billede wizprod.com Nybegynder
08. november 2001 - 16:52 #5
jakoba > ville det ikke være lidt nemmere at indlæse filen med file()?
Avatar billede jakoba Nybegynder
08. november 2001 - 16:56 #6
Sikkert nok :-)) jeg er ikke for stiv i php.
Avatar billede naish Nybegynder
09. november 2001 - 18:40 #7
Simpel måde:

$lines=file(\"sætninger.txt\");

$selectedline=$lines[rand(0,sizeof($lines))];

$words=explode(\" \",$selectedline);
for($i=0;$i=rand(0,30);$i++)
{
  $pos1=rand(0,sizeof($words));
  $pos2=rand(0,sizeof($words));
  $temp=$words[$pos1];
  $words[$pos1]=$words[$pos2];
  $words[$pos2]=$temp;
}

for($i=0;$i<sizeof($words);$i++)
echo $words[$i].\" \";


Ikke for godt kodet, det gik lige lidt stærkt....

MVH
Naish
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Ingeniør til Satellitkommunikation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation