рдорд╛рдирдХ PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдПрд╕рдкреАрдПрд▓) - рднрд╛рдЧ 1: рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░! рдпрд╣ рд▓реЗрдЦ Standard PHP рд▓рд╛рдЗрдмреНрд░реЗрд░реА (SPL) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдЕрднреА рднреА рдХреЛрдИ рд╕рдордЭрджрд╛рд░ рдореИрдиреБрдЕрд▓ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА PHP рдХреЛрд░ (5.3 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЧрдпрд╛ рд╣реИред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдХрдХреНрд╖рд╛рдПрдВ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдБ рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдЕрдкрдиреЗ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдРрд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддрд╛ рд╣реВрдВред рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рднреА рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдФрд░ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░реВрдВрдЧрд╛ред


So. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: php.net/manual/en/book.spl.php
рдПрд╕рдкреАрдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:



рдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

SplDoublyLinkedList


рдПрдХ рджреЛрд╣рд░реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА (DLL) рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдмреАрдЪ рджреЛрдиреЛрдВ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЬреБрдбрд╝реЗ рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕реВрдЪреА рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рджреЛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВ - рдПрдлрдЖрдИрдПрдлрдУ (рдлрд░реНрд╕реНрдЯ рдЗрди рдлрд░реНрд╕реНрдЯ рдЖрдЙрдЯ - рдкрд╣рд▓реЗ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдкрд╣рд▓рд╛ рдмрд╛рдПрдВ) рдФрд░ рдПрд▓рдЖрдИрдПрдлрдУ (рд▓рд╛рд╕реНрдЯ рдЗрди рдлрд░реНрд╕реНрдЯ рдЖрдЙрдЯ - рдЕрдВрддрд┐рдо рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдкрд╣рд▓рд╛ рдмрд╛рдПрдВ)ред SplDoublyLinkedList рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рд╕реНрдЯреИрдХ рдпрд╛ рдХрддрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

SplStack


рдпрд╣ рд╡рд░реНрдЧ SplDoublyLinkedList рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ рдФрд░ рдПрдХ рдвреЗрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$stack = new SplStack(); //     $stack->push('1'); $stack->push('2'); $stack->push('3'); echo $stack->count(); // 3 echo $stack->top(); // 3 echo $stack->bottom(); // 1 echo $stack->serialize(); // i:6;:s:1:"1";:s:1:"2";:s:1:"3"; //     echo $stack->pop(); // 3 echo $stack->pop(); // 2 echo $stack->pop(); // 1 


рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН, рд╣рдордиреЗ array_push рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рд╕рд░рдгреА рдХреЗ рдЕрдВрдд рдореЗрдВ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдФрд░ array_pop - рдЕрдВрддрд┐рдо рддрддреНрд╡ рдирд┐рдХрд╛рд▓рдиреЗред рдЕрдм рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рджреЛ рддрд░реАрдХреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдкрд░реАрдХреНрд╖рдг рдХреА рд╕реНрдерд┐рддрд┐: PHP 5.3.18, рдХреЛрд░ 2 рдбреБрдУ P7350, рд╡рд┐рдВрдбреЛрдЬред рд╕реНрдЯреИрдХ рдкрд░ 1 рд╕реЗ n рддрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рд╕реНрдЯреИрдХ рд╕реЗ рд╕рдм рдХреБрдЫ рдирд┐рдХрд╛рд▓реЗрдВред

рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреА рд╕рдВрдЦреНрдпрд╛рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛SplStack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рд░рд╡реИрдпрд╛
10000.0076860.0085590.898002
1000000.7931840.884979.реореп,ремреи,ренрек,рейренрел

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐ рдиреЗ рд▓рдЧрднрдЧ 10-15% рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ PHP 5.4.8 рдореЗрдВ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛
рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреА рд╕рдВрдЦреНрдпрд╛рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛SplStack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рд░рд╡реИрдпрд╛
10000.0081860.008735.репрей,ренрез,рекреп,рейрепреп
1000000.7323470.771456.репрек,репрей,режрек,репрелрез

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рд╕реЗ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ PHP 5.4.8 PHP 5.3.18 рд╕реЗ рддреЗрдЬ рд╣реИ рдЬрдм рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 10% рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рднреА рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ PHP рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╕рднреА рдмрд╛рдж рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░реВрдВрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдЯреИрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕реНрддрд░ рдкрд░ рд╣реИред

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рд╣рдордиреЗ рд╕реНрдЯреИрдХ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рд╛ рдФрд░ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

 $obj = array("10", "20", "qwerty", "100", array("one", "two", array("100") ) ); 

рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреА рд╕рдВрдЦреНрдпрд╛рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛SplStack рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рд░рд╡реИрдпрд╛
10000.0079740.008301.репрем,режрем,режрен,резрелрем
1000000.8185960.826363.репреп,режрем,режреж,репреорей

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдСрдмреНрдЬреЗрдХреНрдЯ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдпрд╣ рдорд╛рдирдиреЗ рдХреА рд╣рд┐рдореНрдордд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрд╕рдкреАрдПрд▓ рд╕реЗ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реЛрдЧрд╛ред

SplQueue


рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕реНрдЯреИрдХ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдмрд╕ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 $queue = new SplQueue(); $queue->setIteratorMode(SplQueue::IT_MODE_DELETE); $queue->enqueue('one'); $queue->enqueue('two'); $queue->enqueue('qwerty'); $queue->dequeue(); $queue->dequeue(); echo $queue->top(); // qwerty 


SplHeap


рд╣реАрдкреНрд╕ рдкреЗрдбрд╝ рдЬреИрд╕реА рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВ: рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдЕрдкрдиреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬрдмрдХрд┐ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рддреБрд▓рдирд╛ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдкреВрд░реЗ рдвреЗрд░ рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИред рд╕реНрдкреНрд▓реЗрдк рд╣реАрдк рдХреА рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд╛рд░ рд╡рд░реНрдЧ рд╣реИред

SplMaxHeap рдФрд░ SplMinHeap


рджреЛ рд╡рд░реНрдЧреЛрдВ SplHeap рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ: SplMaxHeap - рдЕрдкрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрд╡рд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдХреЛ рдЫрд╛рдБрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, SplMinHeap - рдЖрд░реЛрд╣реА рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╕рд░рдгреА рдЫрд╛рдБрдЯрдиреЗ рдХреЗ рд▓рд┐рдПред

  $heap = new SplMaxHeap(); $heap->insert('111'); $heap->insert('666'); $heap->insert('777'); echo $heap->extract(); // 777 echo $heap->extract(); // 666 echo $heap->extract(); // 111 $heap = new SplMinHeap(); $heap->insert('111'); $heap->insert('666'); $heap->insert('777'); echo $heap->extract(); // 111 echo $heap->extract(); // 666 echo $heap->extract(); // 777 


SplPriorityQueue


рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрд░рдордмрджреНрдзрддрд╛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреА рдЬрд╛рддреА рд╣реИред

  $queue = new SplPriorityQueue(); $queue->setExtractFlags(SplPriorityQueue::EXTR_DATA); //     $queue->insert('Q', 1); $queue->insert('W', 2); $queue->insert('E', 3); $queue->insert('R', 4); $queue->insert('T', 5); $queue->insert('Y', 6); $queue->top(); while($queue->valid()) { echo $queue->current(); $queue->next(); } //YTREWQ 


SplFixedArray


рд╕рдВрд░рдЪрдирд╛ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реИред SplFixedArray рдПрдХ рд╕рддрдд рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЕрдиреБрдХреНрд░рдорд┐рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдорд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЖрджреЗрд╢рд┐рдд рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд░рдгреА рдирд┐рдпрдорд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ:



рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдЧрд┐рдиреЗ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рд╣реИред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ:

  $a = new SplFixedArray(10000); $count = 100000; for($i =0; $i<$count; $i++) { $a[$i] = $i; if ($i==9999) $a->setSize(100000); } 


рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреА рд╕рдВрдЦреНрдпрд╛рдирд┐рдпрдорд┐рдд рд╕рд░рдгреАSplFixedArray рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рд░рд╡реИрдпрд╛
1008.2 x 10E-56.3 x 10E-5рез.рейреж,резрел,реорен,рейрежрез
100000.0049530.003983рез.реирек,рейрел,рейрел,режреирек
1000000.0535860.0385701рез.рейрео,репрей,резрек,релреирез
10000000.5330030.384391рез.рейрео,ремрем,резрем,ренрелреи

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рдХрд┐ рдХрд┐рд╕реА рднреА рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд░рдгреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде, SplFixedArray рд╕реБрд░рд╛рдЧред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдн рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: (рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЖрдХрд╛рд░ 10,000 рддрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдлрд┐рд░ 100,000 рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реБрдЖ):
рдкреБрд╢ рдФрд░ рдкреЙрдк рдХреА рд╕рдВрдЦреНрдпрд╛рдирд┐рдпрдорд┐рдд рд╕рд░рдгреАSplFixedArray рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛рд░рд╡реИрдпрд╛
10000000.0519370.049462рез.режрел,режреж,рейрео,рекрезрей


SplObjectStorage


рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рднрдВрдбрд╛рд░ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдореИрдиреБрдЕрд▓ рд╕реЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
 $s = new SplObjectStorage(); //   $o1 = new StdClass; $o2 = new StdClass; $o3 = new StdClass; $s->attach($o1); //     $s->attach($o2); var_dump($s->contains($o1)); // bool(true) var_dump($s->contains($o2)); // bool(true) var_dump($s->contains($o3)); // bool(false) $s->detach($o2); //     var_dump($s->contains($o1)); // bool(true) var_dump($s->contains($o2)); // bool(false) var_dump($s->contains($o3)); // bool(false) 

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг:
 $s = new SplObjectStorage(); $o1 = (object)array('a'=>1); $o2 = (object)array('b'=>2); $o3 = (object)array('c'=>3); $s[$o1] = "data for object 1"; $s[$o2] = array(1,2,3); foreach($s as $i => $key) { echo "Entry $i:\n"; // You get a numeric index var_dump($key, $s[$key]); echo "\n"; } 

рдкрд░рд┐рдгрд╛рдо:
 Entry 0: object(stdClass)#2 (1) { ["a"]=> int(1) } string(17) "data for object 1" Entry 1: object(stdClass)#3 (1) { ["b"]=> int(2) } array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдПрд╕рдкреАрдПрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЦреЛрдЬ рдХреАред рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рд╕реНрдЯреИрдХ, рдХрддрд╛рд░ рдФрд░ рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЕрдм рд╣рдо SplFixedArray рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕рд░рдгреА рд╕реЗ рддреЗрдЬ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ, рдЗрдВрдЯрд░рдлреЗрд╕, рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/In161987/


All Articles