Autor | Zpráva | ||
---|---|---|---|
happyy Profil * |
#1 · Zasláno: 10. 8. 2010, 11:31:36
mám číslo třeba 35.
pak mám pole array(15 => 'text1', 28 => 'text2', 68 => 'text3' atd a teď bych chtěl vybrat z pole prvek s klíčem nejbližším nižším než je to číslo (takže v tomto případě prvek s klíčem 28) napadá někoho jak to nějak slušně udělat? předem diky |
||
fajzen Profil |
#2 · Zasláno: 10. 8. 2010, 12:03:41
Neviem, či to ide aj slušnejšie, ale malo by fungovať toto:
$pole = array(15 => 'text1', 28 => 'text2', 68 => 'text3'); $cislo = 35; echo najdi_najblizsie($pole, $cislo); function najdi_najblizsie($p, $c) { for($i = $c; $i >= 0; $i--) { if(isset($p[$i])) return $p[$i]; } return 'nenajdene'; // neexistuje mensi index } |
||
PostCC Profil |
#3 · Zasláno: 10. 8. 2010, 12:40:01
Nevím, jestli je to slušnější, nicméně fajzen řešení:
1) nepočítá s písmennými nebo neceločíselnými indexy 2) zbytečně násobí počet cyklů a prodlužuje provedení funkce Já bych to řešil takto: $pole = array(15 => 'text1', 28 => 'text2', 68 => 'text3'); $cislo = 35; Function FindLowerIndex($Pole, $Index) { $Klic = FALSE; KSort($Pole); While(Key($Pole) < $Index) { $Klic = Key($Pole); Next($Pole); } Return $Klic ? $Pole[$Klic] : FALSE; } Echo FindLowerIndex($pole, $cislo); Tady cyklus proběhne pouze dvakrát a navíc je jedno, zda jde o číselné nebo alfanumerické indexy. |
||
happyy Profil * |
#4 · Zasláno: 10. 8. 2010, 13:19:50
PostCC:
diky moc - tohle je super! napadlo mě jen něco jak napsal fajzen a to bylo nepoužitelné. |
||
Časová prodleva: 14 let
|
0