Autor Zpráva
kató
Profil *
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
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 *
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 *
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
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
Je to hash table.
http://www.usenet-forums.com/php-language/15348-zend-engine-array-implementation.html

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:

0