| 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: 16 let
|
|||
0