Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
#1 · Zasláno: 12. 7. 2015, 23:35:48
Ahoj, potřeboval bych odstranit z pole prvek a místo něj dát jiné prvky, nejlépe takové, které jsou uvedeny v jiném poli.
Příklad (místo 'b' vložit 'x' a 'y'): $newitems = ('x','y'); $array = ('a','b','c','d'); //chci dostat tohle: $newarray = ('a','x','y','c','d'); Vím, že jde o triviální problém, ale už jsem nespal pořádně několik dnů a nějak mě prostě při tý únavě nenapadá nějaký easy řešení, abych tam nemusel dělat nějaký čachry s funkcí splice.. Předem díky. |
||
juriad Profil |
#2 · Zasláno: 12. 7. 2015, 23:56:50
quatzael:
A co to zkusit třeba pomocí obyčejného cyklu? $newarray = array(); foreach ($array as $a) { if ($a == 'b') { foreach ($newitems as $n) { $newarray[] = $n; } } else { $newarray[] = $a; } } |
||
quatzael Profil |
juriad:
Aha, mě teď napadlo tohle: array_splice($array,1,1,$newitems); |
||
juriad Profil |
#4 · Zasláno: 13. 7. 2015, 00:01:24
quatzael:
Ano, pokud znáš pozici prvku 'b'. Jinak jej musíš nějak zjistit a iterovat přes všechny výskyty. |
||
quatzael Profil |
#5 · Zasláno: 13. 7. 2015, 00:04:16
juriad:
Jo to zjistím pomocí array_search() . To bude asi nejjednodušší. Každopádně díky!!
|
||
Keeehi Profil |
#6 · Zasláno: 13. 7. 2015, 00:21:12
quatzael:
Záleží jestli tam ten prvek může být jednou a nebo vícekrát. Pro velká pole a spoustu nahrazení bude algoritmicky nejrychlejší projít pole, zjistit počet nahrazení, vypočítat délku nového pole a postupně ho prvek po prvku naplnit. Ovšem v PHP není pole řešené polem ale nějakou hašovací tabulkou. Tam bude ta složitost vycházet pravděpodobně jinak. |
||
quatzael Profil |
#7 · Zasláno: 14. 7. 2015, 10:57:30
Keeehi:
Ten prvek tam bude jen jednou. V poli bude cca 20 prvků a místo jednoho se tam přidá cca 5 nových prvků. Tohle celý se udělá dvakrát. To by snad nemělo mít nějaký zásadní dopad na rychlost, když použiju to array_splice() , ne?
|
||
Keeehi Profil |
#8 · Zasláno: 14. 7. 2015, 12:56:29
To by rozhodně nemělo.
|
||
Časová prodleva: 10 let
|
0