Autor | Zpráva | ||
---|---|---|---|
DarkMeni Profil |
#1 · Zasláno: 12. 12. 2013, 20:24:34
Zdravim, jde nějak nastavit kurzor v poli na prvek se zadaným klíčem a potom vzhledem k němu vybrat předchozí a následující prvek?
Mám pole obrázků <?php $images = array( "image1.jpg" => "Název 1. obrázku", "image2.jpg" => "Název 2. obrázku", "image3.jpg" => "Název 3. obrázku", "image4.jpg" => "Název 4. obrázku" ); ?> a po odeslání požadavku s klíčem požadovaného obrázku chci zjistit jeho název <?php include "images-database.php"; $image = isset($_GET["image"]) ? $_GET["image"] : key($images); $name = isset($images[$image]) ? $images[$image] : false; $path = "images/$image"; if(!$name or !file_exists($path)){ $name = "Obrázek nebyl nalezen"; $path = "images/notfound.jpg"; } //$next, $prev ?> Jde použí nějaká funkce, která by nastavila kurzor na klíč $image? Něco jako set_pointer($images, $image); Nebo budu muset projít prvek po prvku, posouvat ukazatel a zjišťovat jestli sem už náhodou nenarazil na požaovanej klíč? V tom případě mě docela zajímá jestli nebude efektivnější použít 2 pole (s číselným indexem) kde index adresy obrázku bude odpovídat indexu názvu obrázku |
||
Tori Profil |
Tohle by se dalo upravit pro asoc. pole: http://www.php.net/manual/en/class.seekableiterator.php (ale prakticky byste asi taky měl uvnitř 2 pole, pro klíče a hodnoty). O jak velkém poli obrázků mluvíme?
|
||
DarkMeni Profil |
#3 · Zasláno: 13. 12. 2013, 13:06:48
Přibližně tak 30 obrázků
Ten SeekableIterator by pak musel taky procházet prvek po prvku, že? Takže to zkusim teda udělat přes 2 pole, jen to bude možná trochu nepřehledný (ale to pude okomentovat) Díky |
||
anonymní Profil * |
#4 · Zasláno: 13. 12. 2013, 13:31:07
DarkMeni:
nebylo by lépe pracovat s dvourozměrným polem? $images = array ( 0 => array ('nazev', 'text'), 1 => array ('nazev', 'text'), ... ) Sice je to jiné pole, ale v rozjezdu projektu by se s ním možná dalo ještě něco dělat. Isset na klíč +-1 bude rychlejší než nějaké složitější algoritmy na hledání přechozího/následujícího klíče. |
||
DarkMeni Profil |
#5 · Zasláno: 13. 12. 2013, 14:08:58
Takle nějak to právě že nakonec chci udělat, akorát přes 2 pole
$image_path = array( "image1.jpg", "image2.jpg" ); $image_name = array( "Název 1. obrázku", "Název 2. obrázku" ) A napadlo mě, že by sem mohl ty obrázky ukládat jako array(1 => "01-obrazek.jpg", "02-obrazek2.jpg") a ták, a potom jen získat to číslo na začátku a tím dostanu rovnou index
Přes dvourozměrné pole to je i přehledný, ale myslim si že php rychleji vytvoří 2 obyčejná pole než 1 pole a v tom dalších 30 polí Ale nevim, každopádně díky, možná to udělám i přes to dvourozměrné pole |
||
abc Profil |
#6 · Zasláno: 13. 12. 2013, 19:14:05
„myslim si že php rychleji vytvoří 2 obyčejná pole než 1 pole a v tom dalších 30 polí“
V tom asi nebude moc velký rozdíl... Ale můžeš pole definovat jako static: static $images = array( ); |
||
Časová prodleva: 10 let
|
0