Avatar billede jammerlab Nybegynder
14. oktober 2003 - 14:59 Der er 17 kommentarer og
1 løsning

Hurtig hjælp med random funktion!

Skal lige brug elidt hjælp med en random fukntion. Har et array, og jeg skal bruge noget så den echoer alle navne i dette array random men bare ikke de samme navne flere gange.
Avatar billede razor Nybegynder
14. oktober 2003 - 15:02 #1
<?php

function my_sort ($a, $b) {
  return rand(-1, 1);
}

usort($array, 'my_sort');

foreach($array as $element) print $element."<br>";

?>

Det er utestet :-)
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:10 #2
Warning: usort(): The argument should be an array in C:\Programmer\Apache Group\Apache2\htdocs\modern\ladder\random_2on2.php on line 9

Warning: Invalid argument supplied for foreach() in C:\Programmer\Apache Group\Apache2\htdocs\modern\ladder\random_2on2.php on line 11
Avatar billede detox Nybegynder
14. oktober 2003 - 15:13 #3
Avatar billede detox Nybegynder
14. oktober 2003 - 15:29 #4
Fx:

<?php
$navne = array('Arne', 'Bent', 'Carl', 'Dan');
srand((float)microtime()*1000000);
shuffle($navne);
foreach ($navne as $navn) {
    echo $navn . "<br />";
}
?>
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:30 #5
hm hvis jeg nu gerne vil have 2 navne ud for hinanden ?
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:32 #6
hehe $i ... yes er med...
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:35 #7
Hvorfor går denne ikke an?

<?php
$navne = array('Ranger','PAPANDEN','HeatoN','Coldfusion','Quwink','POLICEMASTER','Bertil BearKiller','Jappe Mother fucker','The Dims','Omglol','Jzfg','Ymer','Zeli!c','Vizion');
srand((float)microtime()*1000000);
shuffle($navne);
foreach ($navne as $navn) {
$i++
if(2 =< $i) {
    echo $navn . "<br />";
    $i = 0;
    } else { echo $navn . "<br />"; }
}
?>
Avatar billede detox Nybegynder
14. oktober 2003 - 15:40 #8
<?php
$navne = array('Ranger','PAPANDEN','HeatoN','Coldfusion','Quwink','POLICEMASTER','Bertil BearKiller','Jappe Mother fucker','The Dims','Omglol','Jzfg','Ymer','Zeli!c','Vizion');
srand((float)microtime()*1000000);
shuffle($navne);
$i = 0;
foreach ($navne as $navn) {
$i++;
if(2 <= $i) {
    echo $navn . "<br />";
    $i = 0;
    } else { echo $navn . "<br />"; }
}
?>
Avatar billede detox Nybegynder
14. oktober 2003 - 15:43 #9
Men hvad er det du prøver at opnå med det $i, for den viser jo alle navne sådan som du har lavet det?
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:44 #10
detox ... smukt .. fungere helt som jeg havde i tankerne :)
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:45 #11
fjernede bare <br> i den ene og satte $i = 1 ... på den måde kommer der 2 navne op ved hinanden :P
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 15:45 #12
smid et svar
Avatar billede detox Nybegynder
14. oktober 2003 - 15:50 #13
Aha, kunne osse løses med:

$i = 1;
foreach ($navne as $navn) {
    $i++;
    if($i%2) echo $navn . "<br />";
    else echo $navn . " - ";
}
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 16:02 #14
hvad nu hvis jeg har endnu et array med nogle maps... ehm.. hvordan kan jeg så få dem ind i denne foreach?
Avatar billede jammerlab Nybegynder
14. oktober 2003 - 16:08 #15
altså så den tar disse 2 navne som den gør nu ... det skal den... men den skal så også vælge et andet navn random... kun 1 ... ikke fra samme array men et andet :P
Avatar billede detox Nybegynder
14. oktober 2003 - 16:17 #16
Jeg vil nok foreslå noget i den her stil:

<?php
$navne = array('Ranger','PAPANDEN','HeatoN','Coldfusion','Quwink','POLICEMASTER','Bertil BearKiller','Jappe Mother fucker','The Dims','Omglol','Jzfg','Ymer','Zeli!c','Vizion');
srand((float)microtime()*1000000);
shuffle($navne);
$maps = array('map1', 'map2','map3','map4','map5','map6','map7');
shuffle($maps);
$i = 0;
echo "<table border='1'><tr>";
foreach ($navne as $navn) {
    $i++;
    if($i%2) echo "</tr><tr><td>" . $navn . "</td>";
    else echo "<td>" . $navn . "</td><td> " . $maps[$i/2-1] . "</td>";
}
echo "</tr></table>";
?>
Avatar billede detox Nybegynder
14. oktober 2003 - 16:19 #17
Det kræver selvfølgelig at du har min. halvt så mange maps som der er navne, hvis jeg har forstået dig rigtigt.
Avatar billede detox Nybegynder
14. oktober 2003 - 16:24 #18
En lille forenkling:

<?php
$navne = array('Ranger','PAPANDEN','HeatoN','Coldfusion','Quwink','POLICEMASTER','Bertil BearKiller','Jappe Mother fucker','The Dims','Omglol','Jzfg','Ymer','Zeli!c','Vizion');
srand((float)microtime()*1000000);
shuffle($navne);
$maps = array('map1', 'map2','map3','map4','map5','map6','map7');
shuffle($maps);
$i = 0;
echo "<table border='1'>";
foreach ($navne as $navn) {
    $i++;
    if($i%2) echo "<tr><td>" . $navn . "</td>";
    else echo "<td>" . $navn . "</td><td> " . $maps[$i/2-1] . "</td></tr>";
}
echo "</table>";
?>
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