Autor Zpráva
Jack
Profil *
Zdravím php odborníky!

Potřeboval bych php skript, který na stránku náhodně načte určitý počet ikonek. V php neumím a nechci to dělat v Javě. Mám ideu, jak to bude fungovat. Dokázal by někdo sepsat takovýto skript?)


- vytvoření pole "obrazky", které bude obsahovat třeba 10 prvků, obsahem prvků budou cesty k obrázkům

//Začátek cyklu

- vygenerování náhodného čísla v rozsahu od 0 do indexu posledního prvku pole (délka pole - 1)
- zobrazení obrázku (cesta odpovídá prvku pole pod právě vygenerovaným číslem)
- prohození obsahu prvku (pod právě vygenerovaným číslem) s obsahem posledního prvku pole
- odstranění posledního prvku pole (snad to jde, nevím - jde o to, aby při dalším průchodu cyklu se nevylosoval už jednou použitý obrázek)

//Konec cyklu - cyklus se bude opakovat x krát (tj. při 5 opakování se vylosuje 5 náhodných obrázků z deseti)

Vypadá to složitě, ale podle mě není. Kdyby se někdo našel, budu rád. Děkuji!
Fred
Profil
To zní jak jednorukej bandita, že by casino?
fimmos
Profil
zkusil jsem to takhle:

$pole = array('a.jpg', 'b.jpg', 'c.jpg', 'd.jpg', 'e.jpg', 'f.jpg', 'g.jpg', 'h.jpg', 'r.jpg', 'g.jpg', 'h.jpg', 'r.jpg');
srand((float)microtime() * 1000000);
shuffle($pole);
for ($i = 0; $i < 10; $i++) {
echo '<img src="./' . $pole[$i] . '" alt="" /><br />';
}

vygeneruje to v náhodném pořadí obrázky, kde název souboru je v poli $pole, zamíchá to a pak vypíše jen deset z toho pole
Fred
Profil
Ono je to tady http://www.alistapart.com/articles/betterrotator/ , ale jen na jeden obrázek.
Honza Široký
Profil
Ja bych to udelal takhle:
$obrazky = array('a.jpg', 'b.jpg', 'c.jpg', 'd.jpg', 'e.jpg', 'f.jpg', 'g.jpg', 'h.jpg', 'r.jpg', 'g.jpg', 'h.jpg', 'r.jpg');

$pocet_obrazku = 5;
$vybrane = array ();

for ($i = 0; $i < $pocet_obrazku; $i++) {
$nahodne_cislo = rand(0, (count ($obrazky) - 1));
if (in_array ($nahodne_cislo, $vybrane)) { // kdyz uz byl obrazek nekdy vybran, tak se hleda znova
$i--;
} else { // nebyl vybran => ulozime do vybranych a vypiseme
$vybrane[] = $nahodne_cislo;
echo '<img src="'.$obrazky[$nahodne_cislo].'" alt="obrazek" />';
}
}
Kajman
Profil *
Na podobné věci slouží array_rand...

$obrazky = array('a.jpg', 'b.jpg', 'c.jpg');
srand ((double) microtime() * 10000000);
$vybrane = array_rand ($obrazky, 2);

Tohle vytvoří nové pole, kde budou náhodné dva obrázky z původního seznamu.
Jack
Profil *
Filmos, Honza Široký: Dík za kódy hoši, fungujou OK.

Jenom mám ještě malej dotaz. Dá se v php udělat vícerozměrné pole? Potřeboval bych totiž zároveň s adresou ikony uchovávat i link, na který budou ikony odkazovat.

Tudíž by pak na konci bylo něco jako:

echo '<a href="'.$obrazky[$nahodne_cislo ; 1].'"><img src="'.$obrazky[$nahodne_cislo ; 0].'" alt="obrazek" /></a>';

Jde mi jen o způsob zápisu toho řekněme dvourozměrného pole. Díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.