Autor | Zpráva | ||
---|---|---|---|
milan Profil * |
#1 · Zasláno: 15. 9. 2013, 19:43:54
Dobrý den,
chtěl bych poprosit o radu zda nevíte jak lze upravit podmínku pro výpis pouze určitého počtu souborů. Zda vůbec lze tuto podmínku upravit tak aby se mi vypsaly např. jen tři fotografie.. Moc děkuji za pomoc Milan while (false!==($file = readdir($cesta))) { if ($file != "." && $file != ".." && ) } |
||
Chro Profil |
#2 · Zasláno: 15. 9. 2013, 19:49:22
Jaké tři, první, poslední, náhodné?
|
||
milan Profil * |
#3 · Zasláno: 15. 9. 2013, 19:56:57
Chro:
Děkuji za rychlou reakci, jednalo by se mi o první tři. Pokud by to šlo tak bych byl moc vděčný za ukázku všech tří možností. Díky Milan |
||
Chro Profil |
#4 · Zasláno: 15. 9. 2013, 20:47:29 · Upravil/a: Chro
<?php //na while s readdir zapomeň $cesta = 'obrazky/'; //soubory do pole $soubory = glob($cesta.'*.*'); //*.* znamená načti všechny soubory s název.přípona //*.jpg by bylo načti cokoliv s příponou jpg //první tři //výpis souborů echo <<<EOT <img src="{$soubory[0]}"> <img src="{$soubory[1]}"> <img src="{$soubory[2]}"> EOT; //poslední tři $pocet = count($soubory); $vypis = array($soubory[$pocet - 3], $soubory[$pocet - 2], end($soubory)); //výpis souborů echo <<<EOT <img src="{$vypis[0]}"> <img src="{$vypis[1]}"> <img src="{$vypis[2]}"> EOT; //tři náhodné $pocet = count($soubory); $vypis = array(); while (TRUE) { $nahodne_cislo = rand(0, $pocet - 1); $nahodny_soubor = $soubory[$nahodne_cislo]; if (!in_array($nahodny_soubor, $vypis)) { $vypis[] = $nahodny_soubor; if (count($vypis) === 3) { break; } } } //výpis souborů echo <<<EOT <img src="{$vypis[0]}"> <img src="{$vypis[1]}"> <img src="{$vypis[2]}"> EOT; ?> EDIT: Pro 3 náhodné obrázky mě ještě napadlo efektivnější řešení se shuffle. $cesta = 'obrazky/'; $soubory = glob($cesta.'*.*'); shuffle($soubory); echo <<<EOT <img src="{$soubory[0]}"> <img src="{$soubory[1]}"> <img src="{$soubory[2]}"> EOT; |
||
milan Profil * |
#5 · Zasláno: 15. 9. 2013, 21:28:43
Chro:
Moc díky za pomoc, perfektní i s komentářem. Přeji pěkný večer, Milan. |
||
Chro Profil |
#6 · Zasláno: 15. 9. 2013, 21:37:31
Také přeji pěkný večer, John.
|
||
Alphard Profil |
#7 · Zasláno: 15. 9. 2013, 21:43:21
Chro [#4]:
Když bude souborů méně než 3, parádně se náhodný výpis zacyklí :-) |
||
Chro Profil |
#8 · Zasláno: 15. 9. 2013, 22:01:04
Max execution time to jistí, Alpharde. :-) Z dotazu mi vyplynulo, že Milan ví co dělá a ve složce má obrázků "požehnaně".
|
||
milan Profil * |
#9 · Zasláno: 15. 9. 2013, 22:05:10
Chro, Alphard:
Díky, opravdu ve složkách mám vždy obrázků více než tři. Díky Milan |
||
juriad Profil |
#10 · Zasláno: 15. 9. 2013, 22:06:48
Pro výběr několika náhodných prvků z pole existuje funkce array_rand; bacha na to, že se chová jinak, když je požadovaný jediný prvek.
|
||
Alphard Profil |
#11 · Zasláno: 15. 9. 2013, 22:14:07
Chro:
Já jen upozorňuji, spíše milana. Ono tohle je dost zákeřná chyba. Když v ostatních výpisech bude málo souborů, skončí to nějakým Notice a uživatel ani neuvidí, že něco nevidí. Tady to ale bude horší.
Třeba po nasazení nové kopie webu apod. může být problém. Když se napíše while(true) , měl by se člověk ujistit, že ten cyklus má konec. Ten count() by klidně mohl být u cyklu klasicky, aspoň by to tak nedrážilo :-)
while (count($vypis) < min(RAND_COUNT, count($soubory)) Jednodušší, ale na výkon náročnější řešení, je použít shuffle(). |
||
Chro Profil |
#12 · Zasláno: 15. 9. 2013, 22:31:01
|
||
Časová prodleva: 11 let
|
0