mehrere bilder zufällig wählen

  • Themenstarter Themenstarter Benedikt
  • Beginndatum Beginndatum
B

Benedikt

Hoi!
Jo, ich weiss, sowas gabs schon öffters hier, aber bei mir isses was spezielles:
Angenommen ich habe in einem table, welches 5 cols und 4 rows hat
20 bilder drinnen.
Wie kriege ich es hin das die Bilder in einer zufälligen Reihenfolge ausgegeben werden?
also die dürfen dann halt nicht doppelt oda so vorkommen, dsa ist das problem...
vieeelen dank !!!
Bene
 
hm ich nehme an rand() und so kennst du schon. also zu dem problem mit dem zweimal vorkommen: ich würde einfach die dateinamen in einen array schreiben und dann mit if(!in_array(...)) überprüfen, ob das bild schon angezeigt wurde.
 
aha, jo
danke ersma
is anscheinend aba irrgendwie zu hoch für mich :p

also hier hab ich dsa mal an einem sehr einfachem beispiel versucht:

PHP:
<?
$b=array(0,0,0);
$p=array(0,0,0);

function ermitteln($id)
{
srand(microtime()*1000000);
$zufall = rand(1,3); 
if ($b[$zufall] == 1)
	{
	ermitteln($i);
	}
else
{
$b[$zufall] = 1;
$p[$zufall] = $i;
}
}


$i=0;
while($i < 3)
{
ermitteln($i);
$i++;
}

$u=0;
while($u < 3)
{
echo $p[$u];
$u++;
}
?>

also mein ziel hierbei war, dsa in zufälliger Reichenfolge
123 (1,2,3) ausgegeben wird (also zb 321 oda 213 oda 132,...usw.)

was habe ich hierbei falsch gemacht?
und gibt es dafür vileicht sogar einen einfacheren weg?
vieelen dank,
Bene
 
Am besten du liest alle in ein Array oder zumindest die Indizes.

Dann sollte dir die Funktion shuffle() oder eine der auf der Seite angebotenen Alternativen helfen. Die PHP-eigene Funktion arbeitet wohl nicht sonderlich sauber. In den Kommentaren sind aber einige andere Beispiele dabei, die nicht sonderlich kompliziert sind.

so long, Fluke :)
 
hey, dsa is ne verdammt goile idee mit shuffle(), vielen dank! :-)
ich werd die seite ma ein wenig abchecken
Bene
 
k, läuft alles perfekt, aber ein kleiner prob gibt es.
es werden immer alles zahlen ausser irrgendeine ausgegeben:

PHP:
<?
$spalte=1;
$numbers = array(1,2,3,4,5,6,7,8,9);
srand ((float)microtime()*1000000);
shuffle ($numbers);
echo "<table border=1>";
while (list (, $number) = each ($numbers)) {
	if ($spalte==5)
	{
	echo "</tr><tr><td>$nummer</td>";
	$spalte++;
	}
	else
	{
	echo "<td>$number</td>";
	$spalte++;
	}
}echo "</table>";
?>
also ich hab schon bei einigen variablen +1 hinzuzuschreiben vresucht, aber des geht net...
also beim o.g bsp werden immer nur 8 zufällige zahlen anstadt 9 ausgegeben...
danke für eure hilfe,
Benedikt
 
Zurück