Autor | Zpráva | ||
---|---|---|---|
kató Profil * |
#1 · Zasláno: 14. 7. 2010, 00:29:29
Jak se php zachová pokud v poli indexovaném od 0-10 provedu třeba unset($array[5])? Položka číslo 5 bude vymazána, to je jasné, ale zůstane tam po té hodnotě "volné místo", alokovaná paměť, nebo se to pole automaticky zmenší?
|
||
Mastodont Profil |
#2 · Zasláno: 14. 7. 2010, 00:43:50
Co si to třeba vyzkoušet?
$s = Array('první strašně dlouhá, téměř příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně příšerně dlouhá položka', 'druhá položka', 'třetí položka'); echo memory_get_usage(), '<br>'; unset($s[0]); echo memory_get_usage(), '<br>'; exit; |
||
kató Profil * |
#3 · Zasláno: 14. 7. 2010, 01:19:51
No tak paměť se uvolnila. Ale pořád mi hlodá hlavou jak s tímhle php interně bojuje - jestli tam opravdu zůstane nějaké místo nebo se to pole proste scvrkne.
|
||
DoubleThink Profil * |
#4 · Zasláno: 14. 7. 2010, 02:24:09
kató:
„jestli tam opravdu zůstane nějaké místo nebo se to pole proste scvrkne“ Co si to třeba vyzkoušet? Nescvrkne, na to bys musel použít array_splice. |
||
AM_ Profil |
#5 · Zasláno: 14. 7. 2010, 10:23:11
kató:
„jestli tam opravdu zůstane nějaké místo nebo se to pole proste scvrkne.“ podle mě array v PHP není řešené jako pole, ale jako nějaká dynamická struktura blízká spojovému seznamu - tedy data vůbec nemusí být v paměti fyzicky za sebou. |
||
Mastodont Profil |
#6 · Zasláno: 14. 7. 2010, 10:32:34
|
||
Časová prodleva: 14 let
|
0