Ìàññèâû
Àâòîð: | Àðòåìüåâ Ñåðãåé Èãîðåâè÷ |
ICQ: | 438856621 |
email: | _spin_@bk.ru |
Ìàññèâû î÷åíü øèðîêî ïðèìåíÿþòñÿ â PHP-ñêðèïòàõ.
Ìàññèâ - ýòî íàáîð ýëåìåíòîâ, ê êàæäîìó èç êîòîðûõ ìîæíî îáðàòèòüñÿ ïî èíäåêñó èëè èìåíè. Âñå ìàññèâû â PHP ÿâëÿþòñÿ àññîöèàòèâíûìè, ò.å. îñòîÿò èç ïàð "êëþ÷"="çíà÷åíèå".
<?php $arr = array(); $arr['car'] = '×àéêà'; ?>
Ìàññèâ $arr ñîäåðæèò îäíó ïàðó çíà÷åíèé. Êëþ÷îì â íåé áóäåò çíà÷åíèå 'car', à çíà÷åíèåì - '×àéêà'.
Çíà÷åíèå êëþ÷åé ìîæåò áûòü òåêñòîâîãî èëè ÷èñëîâîãî òèïà, ïðè÷åì â îäíîì ìàññèâå äîïóñêàåòñÿ ïðèìåíåíèå êëþ÷åé ðàçíûõ òèïîâ. Íàïðèìåð, ñëåäóþùèé êîä âïîëíå ðàáîòîñïîñîáåí:
<?php $arr = array(); $arr['car'] = '×àéêà'; $arr['age'] = 100; $arr[10] = 'Ýëåìåíò ñ êëþ÷îì 10 '; ?>
Èíîãäà íåò íåîáõîäèìîñòè çàäàâàòü êëþ÷è ýëåìåíòîâ.  ýòîì ñëó÷àå ìîæíî âîñïîëüçîâàòüñÿ òåì, ÷òî PHP ìîæåò ñîçäàâàòü êëþ÷è àâòîìàòè÷åñêè ïðè äîáàâëåíèè ýëåìåíòîâ â ìàññèâ. Êëþ÷è âñåãäà áóäóò ÷èñëîâûìè è íà÷èíàòüñÿ ñ íóëÿ. Íàïðèìåð:
<?php // ýòè äâà îáúÿâëåíèÿ ìàññèâà ýêâèâàëåíòíû $arr = array('ïåðâûé', 'âòîðîé', 'òðåòèé'); // è $arr = array(0=>'ïåðâûé', 1=>'âòîðîé', 2=>'òðåòèé'); ?>
Ñî÷åòàíèå "=>" èñïîëüçóåòñÿ äëÿ îòäåëåíèÿ êëþ÷à îò çíà÷åíèÿ â ýëåìåíòå ïðè îáúÿâëåíèè ìàññèâà.
Îáðàùåíèå ê îòäåëüíîìó ýëåìåíòó ìàññèâà ïðîèçâîäèòñÿ ïî åãî èíäåêñó èëè êëþ÷ó:
<?php $arr = array('ïåðâûé', 'âòîðîé', 'òðåòèé'); $first = $arr[0]; ?>
À ñ ïîìîùüþ êîíñòðóêöèè foreach ìîæíî áûñòðî ïåðåáðàòü âñå ýëåìåíòû ìàññèâà:
<?php $arr = array('ïåðâûé', 'âòîðîé', 'òðåòèé'); foreach($arr as $key=>$value) echo "Ýëåìåíò ìàññèâà íîìåð $key ðàâåí '$value'"; ?>
Äëÿ ðàáîòû ñ àðõèâàìè â PHP ïðåäóñìîòðåí ðÿä ôóíêöèé, ïîçâîëÿþùèõ âûïîëíèòü íàáîð ñòàíäàðòíûõ îïåðàöèé, òàêèõ êàê ñîðòèðîâêà, ïîèñê èëè ðàçâîðîò ìàññèâà. Ðàññìîòðèì íàèáîëåå èñïîëüçóåìûå ôóíêöèè.
array_chunk() | Ñëóæèò äëÿ ðàçäåëåíèÿ ìàññèâà íà ÷àñòè çàäàííîãî ðàçìåðà. Ôóíêöèÿ âîçâðàùàåò ìàññèâ èç ôðàãìåíòîâ èñõîäíîãî ìàññèâà.
<?php $arr = array('à', 'á', 'â', 'ã', 'ä'); $arr_chunked = array_chunk($arr, 3); // $arr_chunked[0] ñîäåðæèò 'à', 'á', 'â' // $arr_chunked[1] ñîäåðæèò 'ã', 'ä' ?> |
array_combine() | Ôóíêöèÿ îáúåäèíÿåò äâà ìàññèâà òàê, ÷òî ýëåìåíòû ïåðâîãî ñòàíîâÿòñÿ êëþ÷àìè, à ýëåìåíòû âòîðîðîãî - çíà÷åíèÿìè ðåçóëüòèðóþùåãî àññîöèàòèâíîãî ìàññèâà.
<?php $keys = array(0, 1, 2); $vals = array('à', 'á', 'â'); $res = array_combine($keys, $vals); // $res ñîäåðæèò 0=>'à', 1=>'á', 2=>'â' ?> |
array_count_values() | Ïîäñ÷èòûâàåò êîëè÷åñòâî óíèêàëüíûõ çíà÷åíèé â ìàññèâå è ÷àñòîòó èõ ïîÿâëåíèÿ
<?php $arr = array('à', 'á', 'â', 'à', 'â', 'à'); $res = array_count_values($arr); // $res ñîäåðæèò 'à' => 3, 'á' => 1, 'â' => 2 ?> |
array_diff() | Ôóíêöèÿ âûäåëÿåò ðàçíèöó äâóõ ìàññèâîâ, ò.å. ýëåìåíòû, êîòîðûå åñòü â ïåðâîì ìàññèâå è íåò âî âòîðîì.
<?php $arr1 = array('à', 'à', 'â'); $arr2 = array('à', 'á', 'â'); $res = array_diff($arr1, $arr2); // $res ñîäåðæèò 'á' ?> |
array_fill() | Çàïîëíÿåò ìàññèâ çàäàííûì çíà÷åíèåì
<?php $arr = array(); $res = array_fill(2, 3, 'xxx'); // $res ñîäåðæèò 2=>'xxx' 3=>'xxx' 4=>'xxx' ?> |
array_flip() | Ìåíÿåò ìåñòàìè êëþ÷è è çíà÷åíèÿ àññîöèàòèâíîãî ìàññèâà
<?php $arr = array(0=>'à', 1=>'á', 2=>'â'); $res = array_flip($arr); // $res ñîäåðæèò 'à'=>0, 'á'=>1, 'â'=>2 ?> |
array_intersect() | Ôóíêöèÿ âû÷èñëÿåò ïåðåñå÷åíèå äâóõ ìàññèâîâ, ò.å. âûäà¸ò âñå ýëåìåíòû, êîòîðûå åñòü îäíîâðåìåííî â îáîèõ ìàññèâàõ.
<?php $arr1 = array('à', 'à', 'â'); $arr2 = array('à', 'á', 'â'); $res = array_diff($arr1, $arr2); // $res ñîäåðæèò 'à', 'â' ?> |
array_key_exists() | Ôóíêöèÿ ïðîâåðÿåò, èìååòñÿ ëè â ìàññèâå êëþ÷ ñ òàêèì èìåíåì.
<?php $arr = array(0=>'à', 1=>'á', 2=>'â'); if(array_key_exists(1, $arr) echo 'Êëþ÷ íàéäåí'; else echo 'Êëþ÷ íå íàéäåí'; ?> |
array_keys() | Âîçâðàùàåò ìàññèâ êëþ÷åé
<?php $arr = array(0=>'à', 1=>'á', 2=>'â'); $res = array_keys($arr); // $res ñîäåðæèò 0, 1, 2 ?> |
array_merge() | Îáúåäèíÿåò îäèí èëè áîëåå ìàññèâîâ. Çíà÷åíèÿ ýëåìåíòîâ ñ îäèíàêîâûìè êëþ÷àìè çàìåíÿåòñÿ ýëåìåíòàìè âòîðîãî ìàññèâà
<?php $arr1 = array(0=>'à', 1=>'à', 2=>'â'); $arr2 = array(3=>'à', 0=>'á', 4=>'â'); $res = array_merge($arr1, $arr2); // $res ñîäåðæèò 0=>'á', 1=>'à', 2=>'â', 3=>'à', 4=>'â' ?> |
array_rand() | Âîçâðàùàåò îäèí ñëó÷àéíûé ýëåìåíò èç ìàññèâà
<?php $arr = array('à', 'á', 'â'); $res = array_rand($arr, 1); // $res[0] ñîäåðæèò îäèí ñëó÷àéíûé ýëåìåíò èç $arr ?> |
array_reverse() | Âîçâðàùàåò èñõîäíûé ìàññèâ, íî â îáðàòíîì ïîðÿäå, ò.å. ïðî÷èòàííûé îò êîíöà ê íà÷àëó.
<?php $arr = array('à', 'á', 'â'); $res = array_reverse($arr); // $res ñîäåðæèò 'â', 'á', 'à' ?> |
array_search() | Ôóíêöèÿ ïðîèçâîäèò ïîèñê ýëåìåíòà ìàññèâà, ñîîòâåòñòâóþùåãî çàäàííûì óñëîâèÿì. Âîçâðàùàåò èìÿ ñîîòâåòñòâóþùåãî êëþ÷à.
<?php $arr = array(11=>'à', 22=>'á', 33=>'â'); $key = array_search('á', $arr); // $key ðàâåí 22 ?> |
array_shift() | Ñäâèãàåò âñå ýëåìåíòû ìàññèâà ê íà÷àëó, ïðè ýòîì ïåðâûé ýëåìåíò ìàññèâà òåðÿåòñÿ.
<?php $arr = array('à', 'á', 'â'); $res = array_shift($arr); // $res ñîäåðæèò 'á', 'â' ?> |
array_slice() | Èçâëåêàåò ôðàãìåíò ìàññèâà
<?php $arr = array('à', 'á', 'â'); $res = array_slice($arr, 1, 2); // $res ñîäåðæèò 'á', 'â' ?> |
array_sum() | Ôóíêöèÿ âîçâðàùàåò ñóììó âñåõ çíà÷åíèé ìàññèâà
<?php $arr = array(100, 200, 300); $sum = array_sum($arr); // $sum ðàâíî 600 ?> |
array_unique() | Óäàëÿåò ïîâòîðÿþùèåñÿ çíà÷åíèÿ èç ìàññèâà
<?php $arr = array(100, 200, 200, 300); $res = array_unique($arr); // $res ñîäåðæèò 100, 200, 300 ?> |
array_unshift() | Ôóíêöèÿ îáðàòíàÿ array_shift(), ñäâèãàåò âñå ýëåìåíòû ê êîíöó ìàññèâà è äîáàâëÿåò ýëåìåíò â íà÷àëî.
<?php $arr = array('á', 'â'); $res = array_unshift($arr, 'x', 'y'); // $res ñîäåðæèò 'x', 'y', 'á', 'â' ?> |
array_values() | Âîçâðàùàåò ìàññèâ çíà÷åíèé èñõîäíîãî ìàññèâà
<?php $arr = array('x'=>'à', 'y'=>'á', 'z'=>'â'); $res = array_values($arr); // $res ñîäåðæèò 'à', 'á', 'â' ?> |
array() | Ôóíêöèÿ ñîçäà¸ò ïóñòîé èëè ïðåäóñòàíîâëåííûé ìàññèâ.
<?php $arr_empty = array(); $arr_preset = array('x'=>'à', 'y'=>'á', 'z'=>'â'); ?> |
count() | Ïîäñ÷èòûâàåò êîëè÷åñòâî ýëåìåíòîâ â ìàññèâå
<?php $arr = array('à', 'á', 'â'); echo count($arr); // âûâåäåò 3 ?> |
in_array() | Ïðîâåðÿåò, ñóùåñòâóåò ëè â ìàññèâå óêàçàííîå çíà÷åíèå
<?php $arr = array('à', 'á', 'â'); if(in_array('a', $arr)) echo 'Çíà÷åíèå åñòü â ìàññèâå'; else echo 'Çíà÷åíèÿ â ìàññèâå íåò'; ?> |
list() | Îïåðàòîð ïîçâîëÿåò ïðèñâîèòü ìàññèâ ñïèñêó ïåðåìåííûõ.
<?php $arr = array('Èâàí', 'Ïåòðîâè÷', 'Ñåì¸íîâ'); list($name, $otch, $fam) = $arr; echo 'Èìÿ: ' . $name; echo 'Îò÷åñòâî: ' . $otch; echo 'Ôàìèëèÿ: ' . $fam; ?> |
sort() | Ôóíêöèÿ ñîðòèðîâêè ìàññèâà
<?php $arr = array('Ñåì¸í', 'Ïåòðîâè÷', 'Èâàíîâ'); sort($arr); // $arr ñîäåðæèò 'Èâàíîâ', 'Ïåòðîâè÷', 'Ñåì¸í', ?> |
Êàê âèäèòå ïîëüçîâàòüñÿ ìàññèâàìè î÷åíü ïðîñòî, à ãëàâíîå - ÷ðåçâû÷àéíî óäîáíî. Íè îäèí áîëüøîé ïðîåêò íå îáõîäèòñÿ áåç ïðèìåíåíèÿ ìàññèâîâ. Ìû ðàñìîòðåëè òîëüêî ÷àñòü äîñòóïíûõ ôóíêöèé, íå âäàâàÿñü â òîíêîñòè èõ ïðèìåíåíèÿ äëÿ ðàçëè÷íûõ ñèòóàöèé. Áîëåå ïîäðîáíóþ èíôîðìàöèþ âû ñìîæåòå ïî÷åðïíóòü èç îôèöèàëüíîãî ðóêîâîäñòâà íà ñàéòå www.php.net.