Autor | Zpráva | ||
---|---|---|---|
Jakubb Profil * |
#1 · Zasláno: 6. 4. 2014, 16:22:17
$a = array('a' => array('bar' => 'aa', 'act' => 1, 'ber' => 8), 'b' => array('bar' => 'bb', 'act' => 1, 'ber' => 8), 'c' => array('bar' => 'cc', 'act' => 1, 'ber' => 7), 'd' => array('bar' => 'dd', 'act' => 1, 'ber' => 1) ); |
||
_es Profil |
#2 · Zasláno: 6. 4. 2014, 16:29:51
Asi nijako.
|
||
Alphard Profil |
#3 · Zasláno: 6. 4. 2014, 16:37:17
Mělo by jít použít funkce pro práci s poli přebírající callbackovou funkci, ale to byl cyklus jen o úroveň níž. Proč nechcete cyklus, nějaký úkol/soutěž/snaha o optimalizaci?
|
||
Jakubb Profil * |
#4 · Zasláno: 6. 4. 2014, 16:40:21
Alphard:
„Proč nechcete cyklus, nějaký úkol/soutěž/snaha o optimalizaci?“ Ano, snaha o optimalizaci... A nějaký rychlý cyklus poradíte? Díky |
||
Alphard Profil |
Jakubb:
„Ano, snaha o optimalizaci...“ Jestli to pole nemá aspoň tisíc položek, ztrácíte čas na špatném místě. foreach ($a as $k => $v) { if ($v['bar'] == 'cc') return $k; // nebo break, nevím, jestli to bude ve funkci } |
||
_es Profil |
Jakubb:
Ak nechceš cyklus, tak si pozície prvkov podľa hodnôt ukladaj vopred do iného poľa. A čo ak bude hodnota 'cc' vo viacerých prvkoch?
|
||
Jakubb Profil * |
#7 · Zasláno: 6. 4. 2014, 16:59:34 · Upravil/a: Jakubb
_es:
„A čo ak bude hodnota 'cc' vo viacerých prvkoch?“ Nebude, jedná se o unikátní hodnoty.. Alphard: Díky, tak to je klasika výpis:-( Pole má cca 90 nastavených klíčů a každý z nich má cca 5 prvků + 5 jejich hodnot... Je to pořád málo? |
||
Alphard Profil |
#8 · Zasláno: 6. 4. 2014, 17:09:45
Jakubb [#7]:
Přístup ke konkrétnímu prvku v poli podle klíče je rychlý, otázka je, jak dlouhé jsou ty hodnoty, jak náročné je porovnání. To číslo 1000 jsem střelil od boku, samozřejmě záleží na návštěvnosti webu, výkonu serveru apod. 90 prvků hlavního pole se mi zdá ok, hlavní ale je, že toto je izolovaný problém, který lze snadno opravit i později, kdyby byly problémy. Jak navrhuje [#6] _es, při vytváření tohoto pole by se mohlo vytvořit druhé jednoúrovňové pole, kde budou ty páry obráceně ('cc' => 'c'), nebo pokud již víte, co budete hledat (což byste snad reálně vědět mohl), můžete to hledat již při vytváření toho pole. |
||
Časová prodleva: 10 let
|
0