Arrays mit Werten füllen
Henning
- php
Hallo,
<snip>
$fragen=array(0,0,0,0,0,0,0,0,0,0,0,0);
for ($i=1;$i<=10;$i++) {
$fragegefunden=false;
while (!$fragenummer) {
$fragenummer=rand(1,$max);
if (!in_array($fragenummer,$fragen)) {
$fragen[$i]=$fragenummer;
$fragegefunden=true;
}
}
}
</snip>
In dem Codeschnipsel soll ein Array (fragen) mit 10 unterschiedlichen Zahlen gefüllt werden. Doch das Array bleibt leer. Ich habe mir das Array mit echo ausgeben lassen. Alles leer. Kann ich die Werte so überhaupt zuweisen oder muss ich den => Operator verwenden. max ist in diesem Fall übrigens 15.
Gruß,
Henning
Hallo!
In dem Codeschnipsel soll ein Array (fragen) mit 10 unterschiedlichen Zahlen gefüllt werden. Doch das Array bleibt leer. Ich habe mir das Array mit echo ausgeben lassen. Alles leer.
Mit Echo kanst Du nur Strings ausgeben. Versuche mal var_dump($fragen).
Kann ich die Werte so überhaupt zuweisen oder muss ich den => Operator verwenden. max ist in diesem Fall übrigens 15.
Kannst Du. Aber ich würde es anders machen:
<?php
$zahlen = range ( 1, 15);
srand ((float) microtime() * 10000000);
$fragen = array_rand ($zahlen, 10);
print_r($fragen);
?>
Grüße
Andreas
Hallo,
<?php
$zahlen = range ( 1, 15);
srand ((float) microtime() * 10000000);
$fragen = array_rand ($zahlen, 10);
print_r($fragen);
?>
Danke, array_rand kannte ich noch gar nicht. Aber garantiert das auch das alle zahlen unterschiedlich sind?
Gruß,
Henning
Hi!
Danke, array_rand kannte ich noch gar nicht. Aber garantiert das auch das alle zahlen unterschiedlich sind?
Ja. Aber probiers aus, und dann gibts noch http://www.php3.de/manual/de/function.array-rand.php
Grüße
Andreas
Hallo!
Noch ein paar Varianten:
<?php
echo "<pre>";
$max = 15;
$zahlen = range ( 1, $max);
srand ((float) microtime() * 10000000);
$fragen = array_rand ($zahlen, 10);
print_r($fragen);
mt_srand((double)microtime()*1000000);
$fragen2=array();
while(count($fragen2)<10){
$randval = mt_rand( 1, $max);
if(!in_array($randval, $fragen2)) {
$fragen2[]=$randval;
}
}
print_r($fragen2);
srand((double)microtime()*1000000);
$zahlen = range ( 1, $max);
$fragen3=array();
while(count($fragen3)<10){
$randval = array_rand ($zahlen);
unset($zahlen[$randval]);
$fragen3[]=$randval;
}
print_r($fragen3);
?>
;-)
Grüße
Andreas
Hallo,
Ich habe erstmal das hier ausprobiert. Merkwürdigerweise gibt es da manchmal eine 0 im Array?
range(1,15) sollte doch nur die Zahlen 1 bis 15 beinhalten?
$zahlen = range ( 1, $max);
srand ((float) microtime() * 10000000);
$fragen = array_rand ($zahlen, 10);
print_r($fragen);
Gruß,
Henning
Hi!
Ich habe erstmal das hier ausprobiert. Merkwürdigerweise gibt es da manchmal eine 0 im Array?
range(1,15) sollte doch nur die Zahlen 1 bis 15 beinhalten?
Ups, array_rand gibt nur die keys zurück, naja, dann könnte man bei 0 anfangen und das erste Element löschen, also
statt
$zahlen = range ( 1, $max);
sowas:
$zahlen = range ( 0, $max);
unset($zahlen[0]);
Grüße
Andreas
Hallo,
danke, es klappt jetzt.
Gruß,
Henning