Sebastian Becker: genau 3 einträge zufällig aus array ermitteln

Beitrag lesen

hallo, steffen,

ich möchte genau 3 einträge aus einem array zufällig ermitteln, wobei jeder nur einmal vorkommen darf.

array_rand() liefert mir immer zwischen 0 und 3 werten, was nicht meinen vorstellungen entspricht.

wie lässt sich das realisieren?

ich poste Dir mal ein Skript, mit dem ich mal drei verschiedene Zufallsbilder, die nie doppelt angezeigt werden durften, mit title-Text auf einer Seite dargestellt habe. Du kannst Dir das ja entsprechend anpassen.

Viel Spaß, Grüße,

Sebastian

<?php
/* *********************************************************************
Filename: randompics.inc
Description: generate random pics
Author:  © 2002 Sebastian Becker (sebastian.becker@berlin.de)
********************************************************************** */

// configuration
$rp_default_txt = "Berliner Impressionen"; // default description text
$rp_default_w = "150"; // default width
$rp_default_h = "150"; // default height
$rp_pic_num = 3; // number of images to show

// set image path
if($page=="guestbook"){$rp_pic_path="../img/";}else{$rp_pic_path="img/";}

// spacer image
$rp_spacer = "<img src="".$rp_pic_path."onepixel.gif" width="".$rp_default_w."" height="1" alt="">";

// picture parameters
$rp_pic[0] = 'pic01.jpg';
$rp_pic_w[0] = '';
$rp_pic_h[0] = '';
$rp_pic_txt[0] = 'Brandenburger Tor';

$rp_pic[1] = 'pic02.jpg';
$rp_pic_w[1] = '';
$rp_pic_h[1] = '';
$rp_pic_txt[1] = 'Potsdamer Platz';

$rp_pic[2] = 'pic03.jpg';
$rp_pic_w[2] = '';
$rp_pic_h[2] = '';
$rp_pic_txt[2] = 'Brandenburger Tor';

$rp_pic[3] = 'pic04.jpg';
$rp_pic_w[3] = '';
$rp_pic_h[3] = '';
$rp_pic_txt[3] = 'Bundeskanzleramt';

$rp_pic[4] = 'pic05.jpg';
$rp_pic_w[4] = '';
$rp_pic_h[4] = '';
$rp_pic_txt[4] = 'Lichtsäulen am Potsdamer Platz';

$rp_pic[5] = 'pic06.jpg';
$rp_pic_w[5] = '';
$rp_pic_h[5] = '';
$rp_pic_txt[5] = 'Sony Potsdamer Platz (Detail)';

$rp_pic[6] = 'pic07.jpg';
$rp_pic_w[6] = '';
$rp_pic_h[6] = '';
$rp_pic_txt[6] = 'Skulptur am Checkpoint Charlie';

$rp_pic[7] = 'pic08.jpg';
$rp_pic_w[7] = '';
$rp_pic_h[7] = '';
$rp_pic_txt[7] = 'Hamburger Bahnhof';

$rp_pic[8] = 'pic09.jpg';
$rp_pic_w[8] = '';
$rp_pic_h[8] = '';
$rp_pic_txt[8] = 'Funkturm';

$rp_pic[9] = 'pic10.jpg';
$rp_pic_w[9] = '';
$rp_pic_h[9] = '';
$rp_pic_txt[9] = 'Brandenburger Tor & Reichstag';

$rp_pic[10] = 'pic11.jpg';
$rp_pic_w[10] = '';
$rp_pic_h[10] = '';
$rp_pic_txt[10] = 'Fernsehturm';

$rp_pic[11] = 'pic12.jpg';
$rp_pic_w[11] = '';
$rp_pic_h[11] = '';
$rp_pic_txt[11] = 'Kurfürstendamm';

$rp_pic[12] = 'pic13.jpg';
$rp_pic_w[12] = '';
$rp_pic_h[12] = '';
$rp_pic_txt[12] = 'Gedächtniskirche';

$rp_pic[13] = 'pic14.jpg';
$rp_pic_w[13] = '';
$rp_pic_h[13] = '';
$rp_pic_txt[13] = 'Hackesche Höfe';

$rp_pic[14] = 'pic15.jpg';
$rp_pic_w[14] = '';
$rp_pic_h[14] = '';
$rp_pic_txt[14] = 'Hochhäuser am Potsdamer Platz';

$rp_pic[15] = 'pic16.jpg';
$rp_pic_w[15] = '';
$rp_pic_h[15] = '';
$rp_pic_txt[15] = 'Schloss Charlottenburg';

$rp_pic[16] = 'pic17.jpg';
$rp_pic_w[16] = '';
$rp_pic_h[16] = '';
$rp_pic_txt[16] = 'Goldelse auf der Siegessäule';

$rp_pic[17] = 'pic18.jpg';
$rp_pic_w[17] = '';
$rp_pic_h[17] = '';
$rp_pic_txt[17] = 'Sony Potsdamer Platz (Dach)';

$rp_pic[18] = 'pic19.jpg';
$rp_pic_w[18] = '';
$rp_pic_h[18] = '';
$rp_pic_txt[18] = 'Synagoge an der Oranienburger Straße';

// Zahl der Bilder feststellen
$rp_picCount = $rp_pic.length;

// ---------- nothing to change from here ----------

function generateNumbers($min, $max, $anz)
{
$array = range($min, $max);
srand ((double)microtime()*1000000);
for($x=0;$x<$anz;$x++)
{
$i = rand(1, count($array))-1;
$erg[] = $array[$i];
array_splice($array, $i, 1);
}
return $erg;
}

// generate 3 different numbers
$rp_ran_array = generateNumbers(0, count($rp_pic)-1, $rp_pic_num);

$rp_str = "";

for($j=0;$j<$rp_pic_num;$j++)
{
$rp_ran = $rp_ran_array[$j];
$rp_p = $rp_pic_path.$rp_pic[$rp_ran];
$rp_p_w = $rp_pic_w[$rp_ran];
$rp_p_h = $rp_pic_h[$rp_ran];
$rp_p_txt = $rp_pic_txt[$rp_ran];

// use default values if no values are set
if($rp_p_txt=="")$rp_p_txt=$rp_default_txt; if($rp_p_w=="")$rp_p_w=$rp_default_w; if($rp_p_h=="")$rp_p_h=$rp_default_h;

// build HTML string
$rp_str .= $rp_spacer;
$rp_str .= "<img src="".$rp_p."" width="".$rp_p_w."" height="".$rp_p_h."" border="0" alt="".$rp_p_txt."" title="".$rp_p_txt."" onMouseOver="window.status=this.alt;return true;" onMouseOut="window.status='';return true;">";
}

// print HTML
echo($rp_str);

// print picture description
function picText($rp_pic)
{
global $rp_ran;
global $rp_alt_txt;
$rp_ran = $rp_ran[$rp_pic-1];
echo($rp_alt_txt[$rp_ran]);
}

?>