Autor Zpráva
H13
Profil
Ahoj, existuje v php nějaká funkce, která by z pole odebrala (nebo opačně získala) hromadně položky podle kritéria. Příklad:

Existuje pole o např. 50 záznamech. A já bych potřeboval toto pole zredukovat na 10 záznamů, tak abych získal pole z prvky od klíče 30 do klíče 40.

V podstatě to můžu udělat přes foreach, s tím, že tam bude podmínka:

když klíč je menší než 30 - unset(položka)
když klíč je větší než 40 - unset(položka) ==> pole zůstane, jen se zbavím nepotřebných položek

nebo opačným způsobem
když klíč je větší než 30 ale menší než 40, přidej položku do novýho pole ==> vytvoří se nové pole pouze pro potřebné položky.

Mě by zajímalo, jestli toto jde udělat např. pomocí nějaké php - pole funkce, tak, že by se to teoreticky mohlo zrychlit, něco jako:

smaž_položky (menší než 30 a větší než 40)

Teoreticky by to mělo jít pomocí array_filter(), ale to bude na rychlost možná stejné jako foreach ?

Díky
fuckin
Profil *
to je to tak tezke udelat pomoci nejakeho cyklu? Je zbytecne vyuzivat nejake malo pouzivane php fce kvuli tomuto (muj nazor )
H13
Profil
fuckin
Pomocí cyklu je to velmi jednoduché, jen mě prostě zajímá, jestli náhodou nemá někdo zkušenost s funkcí, která by mohla být rychlejší.

Já se foreachu nebráním, ale např. kdyby pole mělo 5000 položek a já bych potřeboval vybrat položky od 3400 do 3410, zda by prostě neexistovala rychlejší interní funkce, která by prostě vrátila 10 položek od klíče 3400 do klíče 3410. (rychleji, než to udělá foreach)
imploder
Profil
H13
Na vybrání části pole v určitém rozsahu indexů se dá použít array_slice().
AM_
Profil
to je to tak tezke udelat pomoci nejakeho cyklu? Je zbytecne vyuzivat nejake malo pouzivane php fce kvuli tomuto (muj nazor )
Tak to není tak docela pravda, vzhledem k tomu, že PHP je dynamický nebo jinak řečeno interpretovaný jazyk, který běží skrz rozhraní napsané v jazyce C, je použití vestavěných funkcí mnohonásobně rychlejší. A ti z nás, kteří se znají se strejdou Googlem a mají intuici na to, na co by mohla existovat funkce, ji většinou rychle najdou :)
fuckin
Profil *
který běží skrz rozhraní napsané v jazyce C, je použití vestavěných funkcí mnohonásobně rychlejší.
slysim poprve :)..to je pak jasne no :)..diky
H13
Profil
imploder
Díky moc

AM_
fuckin
Zkouším pole s 5000 položky a vypadá to, jako by array_slice() byla trochu rychlejší než foreach(), (možná i kvůli vynecháni podmínek, které je potřeba dát do foreache ?). Každopádně pro mé účely array_slice() zabije dvě mouchy jednou ranou, protože nemusím použít následně uspořádání polí: array_values(), které musím použít po foreach

Ještě jednou díky moc.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: