Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 25. 5. 2011, 18:20:29 · Upravil/a: Darker
Mějme pole, jehož kladné celočíselné klíče nemusí začínat nulou a není mezi nimi žádná pravidelnost. Chci polem procházet. Napadla mě tahle koncepce:
$posledni_klic=0; for($i=0;$i<$POCET_KLICU;$i++){ while(!isset($pole[$posledni_klic])) $posledni_klic++; //neco delame s $pole[$posledni_klic] } Pokud nechám stranou nejistotu stran nějakého nekonečného loopu, tak se mi to zdá neefektivní. Doufám že se pletu, co vy na to? Nepoužil jsem sekci PHP jelikož mě zajímá i případné obecné řešení, nicméně problém řeším v PHP. |
||
__construct Profil |
#2 · Zasláno: 25. 5. 2011, 18:43:34
|
||
Darker Profil |
#3 · Zasláno: 25. 5. 2011, 19:17:42 · Upravil/a: Darker
Zapoměl jsem dodat, že mi záleží na procházení od nejmenšího k největšímu, proto mě napadlo použití while, který klíč zvětšije pojednom, dokud se nestrefí do existující hodnoty.
Edit: Vlastně by mi bohatě stačilo seřadit asociativní pole podle jedné z jeho podhodnot. Mohu mít : array( 1526 => "něco", 456 => "něco", 15648 =>"něco", ) nebo array ( 1 => array('ble'=>1526), 2 => array('ble'=>456), 3 => array('ble'=>15648), ) A kýžený výsledek je array ( 1 => array('ble'=>456), 2 => array('ble'=>1526), 3 => array('ble'=>15648), ) |
||
panther Profil |
#4 · Zasláno: 25. 5. 2011, 20:11:21
Darker:
určitě správným řešením je foreach , pokud chceš/potřebuješ procházet od nejmenšího, nejprve si pole seřaď.
|
||
Darker Profil |
#5 · Zasláno: 26. 5. 2011, 18:33:42 · Upravil/a: Darker
panther:
„nejprve si pole seřaď.“ Darker: „Vlastně by mi bohatě stačilo seřadit pole“ Souhlasím. A jak to mám, prosím, provést? |
||
__construct Profil |
#6 · Zasláno: 26. 5. 2011, 18:49:40
Darker:
„A jak to mám, prosím, provést?“ Záleží na tom čo (aký typ bude kľúč) chceš radiť — v tom prvom prípade by stačila funkcia sort() . Pokiaľ ale chceš zoraďovať asociatívne pole podľa obsahu a nie kľúčov (prípad č. 2) riešenie bude zložitejšie.
|
||
Darker Profil |
#7 · Zasláno: 26. 5. 2011, 19:15:16
__construct:
„riešenie bude zložitejšie.“ Obávám se, že máš pravdu. Ale data tahám z databáze a čísla jsou primary_key, nejde to řadit tam (primary key nemá "auto iterate")? |
||
joe Profil |
#8 · Zasláno: 26. 5. 2011, 19:16:51
Darker:
„primary key nemá "auto iterate"“ zřejmě myslíš auto increment seřadit v databázi samozřejmě můžeš - ORDER BY id |
||
__construct Profil |
#9 · Zasláno: 26. 5. 2011, 19:17:38
Darker:
„data tahám z databáze“ Si si istý, že sa nedá zostaviť dotaz, tak aby boli výsledné dáta zoradené podľa potreby? |
||
Darker Profil |
#10 · Zasláno: 26. 5. 2011, 19:26:01 · Upravil/a: Darker
__construct:
„Si si istý, že sa nedá zostaviť dotaz“ Ne, nejsem. Databáze ovládám dost povrchně, zatím jsem ve fázi upravování zkopírovaných příkladů. Problém jsem ale už vyřešil. Asciativní pole jsem vytvoříl tak, aby jeho klíči byly hlavní klíče z DB, pak sem použil sort a foreach. Také dík za joeovo ORDER BY, myslím že se mi to ještě bude hodit. |
||
Časová prodleva: 13 let
|
0