|
|
(не показані 19 проміжних версій 3 учасників) |
Рядок 1: |
Рядок 1: |
− | <h3 style="color:#003399">Асоціативні масиви в PHP</h3>
| + | Прохання не плагіатити |
− | <p>В У PHP індексом масиву може бути не тільки число, а й рядок. Причому на такий рядок не накладаються ніякі обмежень: він може містити пробіли, довжина такого рядка може бути будь-яка. </p>
| + | |
− | <p>Асоціативні масиви особливо зручні в ситуаціях, коли елементи масиву зручніше пов'язувати зі словами, а не з числами.</P>
| + | |
− | <p>Отже, масиви, індексами яких є рядки, називаються асоціативними масивами.</ins>.</p>
| + | |
− | <p><ins>Одновимірні асоціативні масиви:</ins>:</p>
| + | |
− | | + | |
− | <p>Одновимірні асоціативні масиви містять тільки один ключ (елемент), відповідний конкретному індексу асоціативного масиву. Наведемо приклад:</p>
| + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000BB">php</font><br>
| + | |
− | <font color="#FF8000">// Ассоциативный массив</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">names</font><font color="#008000">[</font><font color="#FF0000">"Иванов"</font><font color="#008000">]=</font><font color="#FF0000">"Иван"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">names</font><font color="#008000">[</font><font color="#FF0000">"Сидоров"</font><font color="#008000">]=</font><font color="#FF0000">"Николай"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">name</font><font color="#008000">s[</font><font color="#FF0000">"Петров"</font><font color="#008000">]=</font><font color="#FF0000">"Петр"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#FF8000">// В данном примере: фамилии - ключи ассоциативного массива</font><br>
| + | |
− | <font color="#FF8000">// , а имена - элементы массива names</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | <p>Доступ до елементів одновимірних асоціативних масивів здійснюється так само, як і до елементів звичайних масивів, і має назву<ins>доступом по ключу</ins>: </p>
| + | |
− | <code>echo $names["Иванов"];</code>
| + | |
− | | + | |
− | <p><ins>Багатовимірні асоціативні масиви</ins>:</p>
| + | |
− | <p>Багатовимірні асоціативні масиви можуть містити кілька ключів, відповідних конкретному індексу асоціативного масиву. Розглянемо приклад багатовимірного асоціативного масиву:</p>
| + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000BB">php</font><br>
| + | |
− | <font color="#FF8000">// Многомерный массив</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
| + | |
− | color="#FF0000">"Ivanov"</font><font color="#008000">]</font><font
| + | |
− | color="#0000BB"> </font><font color="#008000">=</font><font color="#0000BB"> array</font><font
| + | |
− | color="#008000">(</font><font color="#FF0000">"name"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"Иванов И.И."</font><font
| + | |
− | color="#008000">,</font><font color="#0000BB"> </font><font
| + | |
− | color="#FF0000">"age"</font><font color="#008000">=></font><font
| + | |
− | color="#FF0000">"25"</font><font color="#008000">,</font><font
| + | |
− | color="#0000BB"> </font><font color="#FF0000">"email"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"</font><u><font
| + | |
− | | + | |
− | color="#008000">);</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
| + | |
− | color="#FF0000">"Petrov"</font><font color="#008000">]</font><font
| + | |
− | color="#0000BB"> </font><font color="#008000">=</font><font color="#0000BB"> array</font><font
| + | |
− | color="#008000">(</font><font color="#FF0000">"name"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"Петров П.П."</font><font
| + | |
− | color="#008000">,</font><font color="#0000BB"> </font><font
| + | |
− | color="#FF0000">"age"</font><font color="#008000">=></font><font
| + | |
− | color="#FF0000">"34"</font><font color="#008000">,</font><font
| + | |
− | color="#0000BB"> </font><font color="#FF0000">"email"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"</font><u><font
| + | |
− | | + | |
− | color="#008000">);</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
| + | |
− | color="#FF0000">"Sidorov"</font><font color="#008000">]</font><font
| + | |
− | color="#0000BB"> </font><font color="#008000">=</font><font color="#0000BB"> array</font><font
| + | |
− | color="#008000">(</font><font color="#FF0000">"name"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"Сидоров С.С."</font><font
| + | |
− | color="#008000">,</font><font color="#0000BB"> </font><font
| + | |
− | color="#FF0000">"age"</font><font color="#008000">=></font><font
| + | |
− | color="#FF0000">"47"</font><font color="#008000">,</font><font
| + | |
− | color="#0000BB"> </font><font color="#FF0000">"email"</font><font
| + | |
− | color="#008000">=></font><font color="#FF0000">"</font><u><font
| + | |
− | | + | |
− | color="#008000">);</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | <p>Багатовимірні масиви схожі на записи в мові Pascal або структури в мові C.</p>
| + | |
− | <p>Доступ до елементів багатовимірного асоціативного масиву здійснюється таким чином:</p>
| + | |
− | <code>echo $A["Ivanov"]["name"]; // Выводит Иванов И.И.<br>echo $A["Petrov"]["email"]; // Выводит [email protected]</code> | + | |
− | | + | |
− | <p>Як ви вже помітили, для створення багатовимірного асоціативного масиву ми використовували спеціальну функцію <strong>array</strong>, ми її розглянемо пізніше, коли будемо розглядати операції над масивами.</p>
| + | |
− | <p>Асоціативні багатовимірні масиви можна створювати і класичним способом, хоча це не так зручно:</p>
| + | |
− | | + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000BB">php</font><br>
| + | |
− | <font color="#FF8000">// Многомерный ассоциативный массив</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Ivanov"</font><font color="#008000">][</font><font color="#FF0000">"name"</font><font color="#008000">]=</font><font color="#FF0000">"Иванов И.И."</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Ivanov"</font><font color="#008000">][</font><font color="#FF0000">"age"</font><font color="#008000">]=</font><font color="#FF0000">"25"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Ivanov"</font><font color="#008000">][</font><font color="#FF0000">"email"</font><font color="#008000">]=</font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">; | + | |
− | </font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Petrov"</font><font color="#008000">][</font><font color="#FF0000">"name"</font><font color="#008000">]=</font><font color="#FF0000">"Петров П.П."</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Petrov"</font><font color="#008000">][</font><font color="#FF0000">"age"</font><font color="#008000">]=</font><font color="#FF0000">"34"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Petrov"</font><font color="#008000">][</font><font color="#FF0000">"email"</font><font color="#008000">]=</font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">; | + | |
− | </font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Sidorov"</font><font color="#008000">][</font><font color="#FF0000">"name"</font><font color="#008000">]=</font><font color="#FF0000">"Сидоров С.С."</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Sidorov"</font><font color="#008000">][</font><font color="#FF0000">"age"</font><font color="#008000">]=</font><font color="#FF0000">"47"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Sidorov"</font><font color="#008000">][</font><font color="#FF0000">"email"</font><font color="#008000">]=</font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">; | + | |
− | </font><br>
| + | |
− | <font color="#FF8000">// Получаем доступ к ключам многомерного ассоциативного массива</font><br>
| + | |
− | <font color="#0000BB">echo </font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Ivanov"</font><font color="#008000">][</font><font color="#FF0000">"name"</font><font color="#008000">].</font><font color="#FF0000">"<br>"</font><font color="#008000">;</font><font color="#0000BB"> </font><font color="#FF8000">// Выводит Иванов И.И.</font><br>
| + | |
− | <font color="#0000BB">echo </font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Sidorov"</font><font color="#008000">][</font><font color="#FF0000">"age"</font><font color="#008000">].</font><font color="#FF0000">"<br>"</font><font color="#008000">;</font><font color="#0000BB"> </font><font color="#FF8000">// Выводит 47</font><br>
| + | |
− | <font color="#0000BB">echo </font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">"Petrov"</font><font color="#008000">][</font><font color="#FF0000">"email"</font><font color="#008000">].</font><font color="#FF0000">"<br>"</font><font color="#008000">;</font><font color="#0000BB"> </font><font color="#FF8000">// Выводит </font><u><font color="#0000FF">[email protected]</font></u><br> | + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | | + | |
− | <h2>Фукціі для роботи з масивами і операції над масивами</h2>
| + | |
− | <h3 style="color:#003399">Функції для роботи з масивами</h3>
| + | |
− | <p>Розглянемо деякі основні функції для роботи з масивами.</p>
| + | |
− | <p style="color:green"><strong>Функція list()</strong></p>
| + | |
− | <p>Припустимо, у нас є масив, що складається з трьох елементів:</p>
| + | |
− | <code>$names[0]="Александр";<br>$names[1]="Николай";<br>$names[2]="Яков";</code>
| + | |
− | | + | |
− | <p>Припустимо, в якийсь момент нам потрібно передати значення всіх трьох елементів масиву, відповідно трьом змінним: <strong>$alex</strong>, <strong>$nick</strong>, <strong>$yakov</strong>. Это можно сделать так:
| + | |
− | </p>
| + | |
− | <code>$alex = $names[0];<br>$nick = $names[1];<br>$yakov = $names[2];</code>
| + | |
− | <p>Якщо масив великий, то такий спосіб привласнення елементів масиву змінним не дуже зручний.</p>
| + | |
− | <p>Є більш раціональний підхід - використання функції.<strong></strong>:</p>
| + | |
− | <code>list ($alex, $nick, $yakov) = $names;</code>
| + | |
− | <p>Якщо нам потрібні тільки "Николай" и "Яков", тоді ми можемо зробити так:</p>
| + | |
− | | + | |
− | <code>list (, $nick, $yakov) = $names;</code>
| + | |
− | <p style="color:green"><strong>Функція array()</strong></p>
| + | |
− | <p>Функція <strong></strong> використовується спеціально для створення масивів. При цьому вона дозволяє створювати порожні масиви. Методи використання функції <strong>Array()</strong>:</p>
| + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000BB">php</font><br>
| + | |
− | <font color="#FF8000">// Создает пустой массив:</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">arr </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">();</font><br>
| + | |
− | <font color="#FF8000">// Создает список с тремя элементами. Индексы начинаются с нуля:</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">arr2 </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">(</font><font color="#FF0000">"Иванов"</font><font color="#008000">,</font><font color="#FF0000">"Петров"</font><font color="#008000">,</font><font color="#FF0000">"Сидоров"</font><font color="#008000">);</font><br>
| + | |
− | <font color="#FF8000">// Создает ассоциативный массив с тремя элементами:</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">arr3 </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">(</font><font color="#FF0000">"Иванов"</font><font color="#008000">=></font><font color="#FF0000">"Иван"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"Петров"</font><font color="#008000">=></font><font color="#FF0000">"Петр"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"Сидоров"</font><font color="#008000">=></font><font color="#FF0000">"Сидор"</font><font color="#008000">);</font><br>
| + | |
− | <font color="#FF8000">// Создает многомерный ассоциативный массив:</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000BB">arr4 </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">(</font><font color="#FF0000">"name"</font><font color="#008000">=></font><font color="#FF0000">"Иванов"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"age"</font><font color="#008000">=></font><font color="#FF0000">"24"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"email"</font><font color="#008000">=></font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">);</font><br> | + | |
− | <font color="#008000">$</font><font color="#0000BB">arr4 </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">(</font><font color="#FF0000">"name"</font><font color="#008000">=></font><font color="#FF0000">"Петров"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"age"</font><font color="#008000">=></font><font color="#FF0000">"34"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"email"</font><font color="#008000">=></font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">);</font><br> | + | |
− | <font color="#008000">$</font><font color="#0000BB">arr4 </font><font color="#008000">=</font><font color="#0000BB"> array</font><font color="#008000">(</font><font color="#FF0000">"name"</font><font color="#008000">=></font><font color="#FF0000">"Сидоров"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"age"</font><font color="#008000">=></font><font color="#FF0000">"47"</font><font color="#008000">,</font><font color="#0000BB"> </font><font color="#FF0000">"email"</font><font color="#008000">=></font><font color="#FF0000">"</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">"</font><font color="#008000">);</font><br> | + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | | + | |
− | <h3 style="color: green;">Операции над массивами</h3>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Сортировка массивов</strong></p>
| + | |
− | <p>Начнем с самого простого — сортировки массивов. В <strong>PHP</strong> для этого существует очень много функций. С их помощью можно сортировать ассоциативные массивы и списки в порядке возрастания или убывания, а также в том порядке, в каком вам необходимо — посредством пользовательской функции сортировки.</p>
| + | |
− | <p style="color: green;"><strong>Сортировка массива по значениям c помощью функций asort() и arsort():</strong></p>
| + | |
− | <p>Функция <strong>asort()</strong> сортирует массив, указанный в ее параметре, так, чтобы его значения шли в алфавитном (если это строки) или в возрастающем (для чисел) порядке.<br>
| + | |
− | | + | |
− | При этом сохраняются связи между ключами и соответствующими им значениями, т. е. некоторые пары ключ=>значение просто "всплывают" наверх, а некоторые — наоборот, "опускаются". Например:</p>
| + | |
− | <code>$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");<br>
| + | |
− | asort($A);<br>
| + | |
− | foreach($A as $k=>$v) echo "$k=>$v ";<br>
| + | |
− | // выводит "c=>Alpha d=>Processor b=>Weapon a=>Zero"<br>
| + | |
− | // как видим, поменялся только порядок пар ключ=>значение</code>
| + | |
− | <p>Функция <strong>arsort()</strong> выполняет то же самое, за одним исключением: она упорядочивает массив не по возрастанию, а по убыванию.</p>
| + | |
− | <p style="color: green;"><strong>Сортировка по ключам с помощью функций ksort() и krsort():</strong></p>
| + | |
− | | + | |
− | <p>Функция <strong>ksort()</strong> практически идентична функции <strong>asort()</strong>, с тем различием, что сортировка осуществляется не по значениями, а по ключам (в порядке возрастания).<br>
| + | |
− | Например:</p>
| + | |
− | <code>$A=array("d"=>"Zero", "c"=>"Weapon", "b"=>"Alpha", "a"=>"Processor");<br> ksort($A);<br>
| + | |
− | for(Reset($A); list($k,$v)=each($A);) echo "$k=>$v ";<br>
| + | |
− | // выводит "a=>Processor b=>Alpha c=>Weapon d=>Zero"</code>
| + | |
− | <p>Функция для сортировки по ключам в обратном порядке называется <strong>krsort()</strong> и применяется точно в таком же контексте, что и <strong>ksort()</strong>.</p>
| + | |
− | <p style="color: green;"><strong>Сортировка по ключам при помощи функции uksort():</strong></p>
| + | |
− | <p>Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в <strong>$Files</strong> хранится список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексикографическом порядке, но также и чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией <strong>uksort()</strong>, написав предварительно функцию сравнения с двумя параметрами, как того требует <strong>uksort()</strong>.</p>
| + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000bb">php</font><br>
| + | |
− | <font color="#ff8000">// Эта функция должна сравнивать значения $f1 и $f2 и nbsp;возвращать:</font><br>
| + | |
− | <font color="#ff8000">// -1, если $f1<$f2,</font><br>
| + | |
− | <font color="#ff8000">// 0, если $f1==$f2</font><br>
| + | |
− | <font color="#ff8000">// 1, если $f1>$f2</font><br>
| + | |
− | <font color="#ff8000">// Под < и > понимается следование этих имен в выводимом списке</font><br>
| + | |
− | <font color="#008000">function</font><font color="#0000bb"> FCmp</font><font color="#008000">($</font><font color="#0000bb">f1</font><font color="#008000">,$</font><font color="#0000bb">f2</font><font color="#008000">)</font><br>
| + | |
− | <font color="#008000">{</font><font color="#0000bb"> </font><font color="#ff8000">// Каталог всегда предшествует файлу</font><br>
| + | |
− | <font color="#008000">if(</font><font color="#0000bb">is_dir</font><font color="#008000">($</font><font color="#0000bb">f1</font><font color="#008000">)</font><font color="#0000bb"> </font><font color="#008000">&&</font><font color="#0000bb"> </font><font color="#008000">!</font><font color="#0000bb">is_dir</font><font color="#008000">($</font><font color="#0000bb">f2</font><font color="#008000">))</font><font color="#0000bb"> </font><font color="#008000">return</font><font color="#0000bb"> </font><font color="#008000">-</font><font color="#0000ff">1</font><font color="#008000">;</font><br>
| + | |
− | <font color="#ff8000">// Файл всегда идет после каталога</font><br>
| + | |
− | <font color="#008000">if(!</font><font color="#0000bb">is_dir</font><font color="#008000">($</font><font color="#0000bb">f1</font><font color="#008000">)</font><font color="#0000bb"> </font><font color="#008000">&&</font><font color="#0000bb"> is_dir</font><font color="#008000">($</font><font color="#0000bb">f2</font><font color="#008000">))</font><font color="#0000bb"> </font><font color="#008000">return</font><font color="#0000bb"> </font><font color="#0000ff">1</font><font color="#008000">;</font><br>
| + | |
− | <font color="#ff8000">// Иначе сравниваем лексикографически</font><br>
| + | |
− | <font color="#008000">if($</font><font color="#0000bb">f1</font><font color="#008000"><$</font><font color="#0000bb">f2</font><font color="#008000">)</font><font color="#0000bb"> </font><font color="#008000">return</font><font color="#0000bb"> </font><font color="#008000">-</font><font color="#0000ff">1</font><font color="#008000">;</font><font color="#0000bb"> </font><font color="#008000">elseif($</font><font color="#0000bb">f1</font><font color="#008000">>$</font><font color="#0000bb">f2</font><font color="#008000">)</font><font color="#0000bb"> </font><font color="#008000">return</font><font color="#0000bb"> </font><font color="#0000ff">1</font><font color="#008000">;</font><font color="#0000bb"> </font><font color="#008000">else</font><font color="#0000bb"> </font><font color="#008000">return</font><font color="#0000bb"> </font><font color="#0000ff">0</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">}</font><br>
| + | |
− | <font color="#ff8000">// Пусть $Files содержит массив с ключами — именами файлов</font><br>
| + | |
− | <font color="#ff8000">// в текущем каталоге. Отсортируем его.</font><br>
| + | |
− | <font color="#0000bb">uksort</font><font color="#008000">($</font><font color="#0000bb">Files</font><font color="#008000">, </font><font color="#ff0000">"FCmp"</font><font color="#008000">);</font><font color="#0000bb"> </font><font color="#ff8000">// передаем функцию сортировки "по ссылке"</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | | + | |
− | <p>Конечно, связи между ключами и значениями функцией <strong>uksort()</strong> сохраняются, т. е., опять же, некоторые пары просто "всплывают" наверх, а другие — "оседают".</p>
| + | |
− | | + | |
− | <p style="color: green;"><strong>Сортировка по значениям при помощи функции uasort()</strong></p>
| + | |
− | <p>Функция <strong>uasort()</strong> очень похожа на <strong>uksort()</strong>, с той разницей, что сменной (пользовательской) функции сортировки "подсовываются" не ключи, а очередные значения из массива. При этом также сохраняются связи в парах ключ=>значение.</p>
| + | |
− | <p style="color: green;"><strong>Переворачивание массива с помощью функции array_reverce()</strong></p>
| + | |
− | <p>Функция <strong>array_reverse()</strong> возвращает массив, элементы которого следуют в обратном порядке относительно массива, переданного в параметре. При этом связи между ключами и значениями, конечно, не теряются. Например, вместо того, чтобы ранжировать массив в обратном порядке при помощи <strong>arsort()</strong>, мы можем отсортировать его в прямом порядке, а затем перевернуть:</p>
| + | |
− | | + | |
− | <code>$A=array("a"=>"Zero","b"=>"Weapon","c"=>"Alpha","d"=>"Processor");<br>
| + | |
− | asort($A);<br>
| + | |
− | $A=array_reverse($A);</code>
| + | |
− | <p>Конечно, указанная последовательность работает дольше, чем один-единственный вызов <strong>arsort()</strong>.</p>
| + | |
− | <p style="color: green;"><strong>Сортировка списка при помощи функций sort() и rsort()</strong></p>
| + | |
− | | + | |
− | <p>Эти две функции предназначены в первую очередь для сортировки списков. </p>
| + | |
− | <p>Функция <strong>sort()</strong> сортирует список (разумеется, по значениям) в порядке возрастания, а <strong>rsort()</strong> — в порядке убывания. Пример для функции <strong>sort()</strong>:</p>
| + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000bb">php</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">A</font><font color="#008000">=</font><font color="#0000bb">array</font><font color="#008000">(</font><font color="#ff0000">"40"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"20"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"10"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"30"</font><font color="#008000">);</font><br>
| + | |
− | <font color="#0000bb">sort</font><font color="#008000">($</font><font color="#0000bb">A</font><font color="#008000">);</font><br>
| + | |
− | <font color="#008000">for($</font><font color="#0000bb">i</font><font color="#008000">=</font><font color="#0000ff">0</font><font color="#008000">;</font><font color="#0000bb"> </font><font color="#008000">$</font><font color="#0000bb">i</font><font color="#008000"><</font><font color="#0000bb">count</font><font color="#008000">($</font><font color="#0000bb">A</font><font color="#008000">);</font><font color="#0000bb"> </font><font color="#008000">$</font><font color="#0000bb">i</font><font color="#008000">++)</font><font color="#0000bb"> echo </font><font color="#ff0000">"$A[$i]"</font><font color="#008000">.</font><font color="#ff0000">"<br>"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#ff8000">// выводит 10 20 30 40</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | <p style="color: green;"><strong>Перемешивание списка с помощью функции shuffle()</strong></p>
| + | |
− | <p>Функция <strong>shuffle()</strong> "перемешивает" список, переданный ей первым параметром, так, чтобы его значения распределялись случайным образом. Обратите внимание, что, во-первых, изменяется сам массив, а во вторых, ассоциативные массивы восприимаются как списки. Пример:</p>
| + | |
− | | + | |
− | <code>$A=array(10,20,30,40,50);<br>
| + | |
− | shuffle($A);<br>
| + | |
− | foreach($A as $v) echo "$v ";</code>
| + | |
− | <p>Приведенный фрагмент кода выводит числа <strong>10, 20, 30, 40 и 50</strong> в случайном порядке.</p>
| + | |
− | <p>Выполнив этот фрагмент несколько раз, вы можете обнаружить, что от запуска к запуску очередность следования чисел не изменяется. Это свойство обусловлено тем, что функция <strong>shuffle()</strong> использует стандартный генератор случайных чисел, который перед работой необходимо инициализировать при<br>
| + | |
− | | + | |
− | помощи вызова <strong>srand()</strong>.</p>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Операции с ключами и значениями массива</strong></p>
| + | |
− | <p><strong>array_flip(array $arr)</strong></p>
| + | |
− | <p>Функция <strong>array_flip()</strong> "пробегает" по массиву и меняет местами его ключи и значения. Исходный массив <strong>$arr</strong> не изменяется, а результирующий массив просто возвращается.<br>
| + | |
− | Конечно, если в массиве присутствовали несколько элементов с одинаковыми значениями, учитываться будет только последний из них:</p>
| + | |
− | | + | |
− | <code>$A=array("a"=>"aaa", "b"=>"aaa", "c"=>"ccc");<br>
| + | |
− | $A=array_flip($A);<br>
| + | |
− | // теперь $A===array("aaa"=>"b", "ccc"=>"c");</code>
| + | |
− | <p style="color: green;"><strong>array_keys(array $arr [,mixed $SearchVal])</strong></p>
| + | |
− | <p>Функция <strong>array_keys()</strong> возвращает список, содержащий все ключи массива <strong>$arr</strong>. Если задан необязательный параметр <strong>$SearchVal</strong>, то она вернет только те ключи, которым соответствуют значения <strong>$SearchVal</strong>.</p>
| + | |
− | | + | |
− | <p>Фактически, эта функция с заданным вторым параметром является обратной по отношению к оператору <strong>[]</strong> — извлечению значения по его ключу.</p>
| + | |
− | <p style="color: green;"><strong>array_values(array $arr)</strong></p>
| + | |
− | <p>Функция <strong>array_values()</strong> возвращает список всех значений в ассоциативном массиве <strong>$arr</strong>. Очевидно, такое действие бесполезно для списков, но иногда оправдано для хэшей.</p>
| + | |
− | <p style="color: green;"><strong>in_array(mixed $val, array $arr)</strong></p>
| + | |
− | <p>Функция <strong>in_array()</strong> возвращает <strong>true</strong>, если элемент со значением <strong>$val</strong> присутствует в массиве <strong>$arr</strong>.<br>
| + | |
− | | + | |
− | Впрочем, если вам часто приходится проделывать эту операцию, подумайте: не лучше ли будет воспользоваться ассоциативным массивом и хранить данные в его ключах, а не в значениях? На этом вы можете сильно выиграть в быстродействии.</p>
| + | |
− | <p style="color: green;"><strong>array_count_values(list $List)</strong></p>
| + | |
− | <p>Функция <strong>array_count_values() </strong>подсчитывает, сколько раз каждое значение встречается в списке <strong>$List</strong>, и возвращает ассоциативный массив с ключами — элементами списка и значениями — количеством повторов этих элементов. Иными словами, функция <strong>array_count_values()</strong> подсчитывает частоту появления значений в списке <strong>$List</strong>. Пример:</p>
| + | |
− | | + | |
− | <code>$List=array(1, "hello", 1, "world", "hello");<br>
| + | |
− | array_count_values($array);<br>// возвращает array(1=>2, "hello"=>2, "world"=>1)</code>
| + | |
− | | + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Слияние массивов</strong></p>
| + | |
− | <p>Слияние (конкатенация) массивов - это операция создания массива, состоящего из элементов нескольких других массивов. Слияние массивов - это очень опасная операция, поскольку результат слияния подчиняется своей логике, забыв о которой можно потерять данные. Слияние массивов реализуется при помощи оператора "<strong>+</strong>" или с помощью функции <strong>array_merge()</strong>. Слияние <ins>списков</ins> может осуществляться только с помощью функции <strong>array_merge()</strong>.</p>
| + | |
− | | + | |
− | <p>Предположим, мы имеем два массива:</p>
| + | |
− | <code>$A = array("1"=>"первый", "2"=>"Второй");<br>
| + | |
− | $B = array("1"=>"первый", "2"=>"Второй");</code>
| + | |
− | <p>Теперь сольем данные два массива в один массив <strong>$C</strong>:</p>
| + | |
− | <code>$C = $A + $B;</code>
| + | |
− | | + | |
− | <p>Оператор "<strong>+</strong>" для массивов не коммутативен. Это означает, что <strong>$A + $B</strong> не равно <strong>$B + $A</strong>.</p>
| + | |
− | <p>В результате рассмотренного примера мы получим массив <strong>$C</strong> следующего вида:</p>
| + | |
− | <code>"1"=>"Первый", "2"=>"Второй", "3"=>"Третий", "4"=>"Четвертый"</code>
| + | |
− | | + | |
− | <p>А в результате <strong>$B + $A</strong> мы получим такой массив:</p>
| + | |
− | <code>"3"=>"Третий", "4"=>"Четвертый", "1"=>"Первый", "2"=>"Второй"</code>
| + | |
− | <p>При слиянии списков такой метод не работает. Поясним данный факт на примере:</p>
| + | |
− | <p>Предположим, у нас есть два массива:</p>
| + | |
− | <code>$A = array(10,11,12);<br>
| + | |
− | $B = array(13,14,15);</code>
| + | |
− | <p>В результате слияния списков <strong>$A</strong> и <strong>$B</strong> ( <strong>$A + $B</strong> ) мы получим: 10,11,12. А это совсем не тот результат, который мы хотели получить... Связано это с тем, что при слиянии списков с одинаковыми индексами в результирующем массиве остается элемент первого массива, причем на том же месте. В таком случае нам необходимо использовать функцию <strong>array_merge()</strong></p>
| + | |
− | <p style="color: green;"><strong>Функция array_merge()</strong></p>
| + | |
− | | + | |
− | <p>Функция <strong>array_merge()</strong> призвана устранить все недостатки, присущие оператору "<strong>+</strong>" для слияния массивов. А именно, она сливает массивы, перечисленные в ее аргументах, в один большой массив и возвращает результат. Если в массивах встречаются одинаковые ключи, в результат помещается пара ключ=>значение из того массива, который расположен правее в списке аргументов. Однако это не затрагивает числовые ключи: элементы с такими ключами помещаются в конец результирующего массива в любом случае.<br>
| + | |
− | Таким образом, с помощью <strong>array_merge()</strong> мы можем избавиться от всех недостатков оператора "<strong>+</strong>" для массивов. Вот пример, сливающий два списка в один:</p>
| + | |
− | <code>$L1=array(100,200,300);<br>
| + | |
− | $L2=array(400,500,600);<br>
| + | |
− | $L=array_merge($L1,$L2);<br>
| + | |
− | // теперь $L===array(100,200,300,400,500,600);</code>
| + | |
− | <p>Всегда используйте эту функцию, если вам нужно работать именно со списками, а не с обычными ассоциативными массивами.</p>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Получение части массива</strong></p>
| + | |
− | <p>Для получения части массива можно использовать функцию <a href="/functions/?array_slice"><strong>array_slice()</strong></a> </p>
| + | |
− | | + | |
− | <p style="color: green;"><strong>array_slice(array $Arr, int $offset [, int $len])</strong></p>
| + | |
− | <p>Эта функция возвращает часть ассоциативного массива, начиная с пары <strong>ключ=>значения</strong> со смещением (номером) <strong>$offset</strong> от начала и длиной <strong>$len</strong> (если последний параметр не задан - до конца массива).<br>
| + | |
− | Параметры <strong>$offset</strong> и <strong>$len</strong> задаются по точно таким же правилам, как и аналогичные параметры в функции <strong>substr()</strong>. А именно, они могут быть отрицательными (в этом случае отсчет осуществляется от конца массива), и т. д. Вот несколько примеров:</p>
| + | |
− | | + | |
− | <code>$input = array ("a", "b", "c", "d", "e");<br>
| + | |
− | $output = array_slice ($input, 2); // "c", "d", "e"<br>
| + | |
− | $output = array_slice ($input, 2, -1); // "c", "d"<br>
| + | |
− | $output = array_slice ($input, -2, 1); // "d"<br>
| + | |
− | $output = array_slice ($input, 0, 3); // "a", "b", "c"</code>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Вставка и удаление элементов массивов</strong></p>
| + | |
− | <p>Мы уже знаем несколько операторов, которые отвечают за вставку и удаление элементов. Например, оператор <strong>[]</strong> (пустые квадратные скобки) добавляет элемент в конец массива, присваивая ему числовой ключ, а оператор <strong>Unset()</strong> вместе с извлечением по ключу удаляет нужный элемент. Язык PHP поддерживает и многие другие функции, которые иногда бывает удобно использовать.</p>
| + | |
− | | + | |
− | <p style="color: green;"><strong>array_push(alist &$Arr, mixed $var1 [, mixed $var2, …])</strong></p>
| + | |
− | <p>Эта функция добавляет к списку <strong>$Arr</strong> элементы <strong>$var1</strong>, <strong>$var2</strong> и т. д. Она присваивает им числовые индексы — точно так же, как это происходит для стандарных <strong>[]</strong>. Если вам нужно добавить всего один элемент, наверное, проще и будет воспользоваться этим оператором:</p>
| + | |
− | <code>array_push($Arr,1000); // вызываем функцию…<br>
| + | |
− | $Arr[]=100; // то же самое, но короче</code>
| + | |
− | <p>Обратите внимание, что функция <strong>array_push()</strong> воспринимает массив, как стек, и добавляет элементы всегда в его конец. Она возвращает новое число элементов в массиве.</p>
| + | |
− | <p style="color: green;"><strong>array_pop(list &$Arr)</strong></p>
| + | |
− | <p>Функция <strong>array_pop()</strong>, является противоположностью <strong>array_push()</strong>, снимает элемент с "вершины" стека (то есть берет последний элемент списка) и возвращает его, удалив после этого его из <strong>$Arr</strong>. С помощью этой функции мы можем строить конструкции, напоминающие стек. Если список <strong>$Arr</strong> был пуст, функция возвращает пустую строку.</p>
| + | |
− | | + | |
− | <p style="color: green;"><strong>array_unshift(list &$Arr, mixed $var1 [, mixed $var2, …])</strong></p>
| + | |
− | <p>Функция <strong>array_unshift</strong> очень похожа на <strong>array_push()</strong>, но добавляет перечисленные элементы не в конец, а в начало массива. При этом порядок следования <strong>$var1</strong>, <strong>$var2</strong> и т. д. остается тем же, т. е. элементы как бы "вдвигаются" в список слева. Новым элементам списка, как обычно, назначаются числовые индексы, начиная с <strong>0</strong>; при этом все ключи старых элементов массива, которые также были числовыми, изменяются (чаще всего они увеличиваются на число вставляемых значений). Функция возвращает новый размер массива. Вот пример ее применения:</p>
| + | |
− | | + | |
− | <code>$A=array(10,"a"=>20,30);<br>
| + | |
− | array_unshift($A,"!","?");<br>
| + | |
− | // теперь $A===array(0=>"!", 1=>"?", 2=>10, a=>20, 3=>30)</code>
| + | |
− | <p style="color: green;"><strong>mixed array_shift(list &$Arr)</strong></p>
| + | |
− | | + | |
− | <p>Функция <strong>mixed array_shift</strong> извлекает первый элемент массива <strong>$Arr</strong> и возвращает его. Она сильно напоминает <strong>array_pop()</strong>, но только получает начальный, а не конечный элемент, а также производит довольно сильную "встряску" всего массива: ведь при извлечении первого элемента приходится корректировать все числовые индексы у всех оставшихся элементов…</p>
| + | |
− | <p style="color: green;"><strong>array_unique(array $Arr)</strong></p>
| + | |
− | <p>Функция <strong>array_unique()</strong> возвращает массив, составленный из всех уникальных значений массива <strong>$Arr</strong> вместе с их ключами. В результирующий массив помещаются первые встретившиеся пары ключ=>значение:</p>
| + | |
− | | + | |
− | <code>$input=array("a" => "green", "red", "b" => "green", "blue", "red");<br>
| + | |
− | $result=array_unique($input);<br>
| + | |
− | // теперь $result===array("a"=>"green", "red", "blue");</code>
| + | |
− | <p style="color: green;"><strong>array_splice(array &$Arr, int $offset [, int $len] [, int $Repl])</strong></p>
| + | |
− | <p>Функция <strong>array_splice</strong>, также как и <strong>array_slice()</strong>, возвращает подмассив <strong>$Arr</strong>, начиная с индекса <strong>$offset </strong>максимальной длины <strong>$len</strong>, но, вместе с тем, она делает и другое полезное действие. А именно, она заменяет только что указанные элементы на то, что находится в массиве <strong>$Repl</strong> (или просто удаляет, если <strong>$Repl</strong> не указан). Параметры <strong>$offset</strong> и <strong>$len</strong> задаются так же, как и в функции <strong>substr()</strong> — а именно, они могут быть и отрицательными, в этом случае отсчет начинается от конца массива. Вот некоторые примеры:</p>
| + | |
− | | + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000bb">php</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">input</font><font color="#008000">=</font><font color="#0000bb">array</font><font color="#008000">(</font><font color="#ff0000">"red"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"green"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"blue"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"yellow"</font><font color="#008000">);</font><br>
| + | |
− | <font color="#0000bb">array_splice</font><font color="#008000">($</font><font color="#0000bb">input</font><font color="#008000">,</font><font color="#0000ff">2</font><font color="#008000">);</font><br>
| + | |
− | <font color="#ff8000">// Теперь $input===array("red", "green")</font><br>
| + | |
− | <font color="#0000bb">array_splice</font><font color="#008000">($</font><font color="#0000bb">input</font><font color="#008000">,</font><font color="#0000ff">1</font><font color="#008000">,-</font><font color="#0000ff">1</font><font color="#008000">);</font><br>
| + | |
− | <font color="#ff8000">// Теперь $input===array("red", "yellow")</font><br>
| + | |
− | <font color="#0000bb">array_splice</font><font color="#008000">($</font><font color="#0000bb">input</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#008000">-</font><font color="#0000ff">1</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#0000ff">1</font><font color="#008000">,</font><font color="#0000bb"> array</font><font color="#008000">(</font><font color="#ff0000">"black"</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#ff0000">"maroon"</font><font color="#008000">));</font><br>
| + | |
− | <font color="#ff8000">// Теперь $input===array("red", "green", "blue", "black", "maroon")</font><br>
| + | |
− | <font color="#0000bb">array_splice</font><font color="#008000">($</font><font color="#0000bb">input</font><font color="#008000">,</font><font color="#0000bb"> </font><font color="#0000ff">1</font><font color="#008000">,</font><font color="#0000bb"> count</font><font color="#008000">($</font><font color="#0000bb">input</font><font color="#008000">),</font><font color="#0000bb"> </font><font color="#ff0000">"orange"</font><font color="#008000">);</font><br>
| + | |
− | <font color="#ff8000">// Теперь $input===array("red", "orange")</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | <p>Последний пример показывает, что в качестве параметра <strong>$Repl</strong> мы можем указать и обычное, строковое значение, а не массив из одного элемента.</p>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Переменные и массивы</strong></p>
| + | |
− | <p style="color: green;"><strong>compact(mixed $vn1 [, mixed $vn2, …])</strong></p>
| + | |
− | | + | |
− | <p>Функция <strong>compact()</strong> упаковывает в массив переменные из текущего контекста (глобального или контекста функции), заданные своими именами в <strong>$vn1</strong>, <strong>$vn2</strong> и т. д. При этом в массиве образуются пары с ключами, равными содержимому <strong>$vnN</strong>, и значениями соответствующих переменных. Вот пример использования этой функции:</p>
| + | |
− | <code>$a="Test string";<br>
| + | |
− | $b="Some text";<br>
| + | |
− | $A=compact("a","b");<br>
| + | |
− | // теперь $A===array("a"=>"Test string", "b"=>"Some text")</code>
| + | |
− | <p>Почему же тогда параметры функции обозначены как <strong>mixed</strong>? Дело в том, что они могут быть не только строками, но и списками строк. В этом случае функция последовательно перебирает все элементы этого списка, и упаковывает те переменные из текущего контекста, имена которых она встретила. Более того — эти списки могут, в свою очередь, также содержать списки строк, и т. д. Правда, последнее используется сравнительно редко, но все же вот пример:</p>
| + | |
− | <code>$a="Test";<br>
| + | |
− | $b="Text";<br>
| + | |
− | $c="CCC";<br>
| + | |
− | $d="DDD";<br>
| + | |
− | $Lst=array("b",array("c","d"));<br>
| + | |
− | $A=compact("a",$Lst);<br>
| + | |
− | // теперь $A===array("a"=>"Test", "b"=>"Text", "c"=>"CCC", "d"=>"DDD")</code>
| + | |
− | | + | |
− | <p style="color: green;"><strong>extract(array $Arr [, int $type] [, string $prefix])</strong></p>
| + | |
− | <p>Функция <strong>extract()</strong> производит действия, прямо противоположные <strong>compact()</strong>. А именно, она получает в параметрах массив <strong>$Arr</strong> и превращает каждую его пару ключ=>значение в переменную текущего контекста.</p>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Создание списка – диапазона чисел</strong></p>
| + | |
− | <p style="color: green;"><strong>range(int $low, int $high)</strong></p>
| + | |
− | | + | |
− | <p>Эта функция очень простая. Она создает список, заполненный целыми числами от <strong>$low</strong> до <strong>$high</strong> включительно.</p>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Счетчик элементов массива</strong></p>
| + | |
− | <p>Для подсчета элементов массива предназначена функция <strong>count()</strong>.</p>
| + | |
− | <p>Пример использования функции <strong>count()</strong>:</p>
| + | |
− | | + | |
− | <code><font color="#000000"><font color="#008000"><?</font><font color="#0000bb">php</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">arr</font><font color="#008000">[]=</font><font color="#0000ff">5</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">arr</font><font color="#008000">[]=</font><font color="#0000ff">4</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">arr</font><font color="#008000">[]=</font><font color="#0000ff">8</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">arr</font><font color="#008000">[]=</font><font color="#0000ff">3</font><font color="#008000">;</font><br>
| + | |
− | <font color="#008000">$</font><font color="#0000bb">arr</font><font color="#008000">[]=</font><font color="#0000ff">8</font><font color="#008000">;</font><br>
| + | |
− | <font color="#0000bb">echo </font><font color="#ff0000">"<h2>Число элементов массива: "</font><font color="#008000">.</font><font color="#0000bb">count</font><font color="#008000">($</font><font color="#0000bb">arr</font><font color="#008000">).</font><font color="#ff0000">"</h2>"</font><font color="#008000">;</font><br>
| + | |
− | <font color="#ff8000">// Выводит: Число элементов массива: 5</font><br>
| + | |
− | <font color="#008000">?></font></font></code>
| + | |
− | <p style="color: rgb(0, 51, 153);"><strong>Удаление массива и его элементов</strong></p>
| + | |
− | <p>Если вы хотите удалить массив целиком, воспользуйтесь функцией <strong>unset()</strong>.</p>
| + | |
− | | + | |
− | <p>Если вы хотите удалить пару ключ/значение, вы также можете использовать функцию <b>unset()</b>. Приведем конкретные примеры:</p>
| + | |
− | <code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $arr </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(0, 0, 187);">5 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">1</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">12 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">);<br><br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(0, 0, 187);">56</span><span style="color: rgb(0, 119, 0);">; </span><span style="color: rgb(255, 128, 0);">// В этом месте скрипта это<br>
| + | |
− | // эквивалентно $arr[13] = 56;<br><br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">"x"</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(0, 0, 187);">42</span><span style="color: rgb(0, 119, 0);">; </span><span style="color: rgb(255, 128, 0);">// Это добавляет к массиву новый<br>
| + | |
− | // элемент с ключом "x"<br>
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 119, 0);">unset(</span><span style="color: rgb(0, 0, 187);">$arr</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(0, 0, 187);">5</span><span style="color: rgb(0, 119, 0);">]); </span><span style="color: rgb(255, 128, 0);">// Это удаляет элемент из массива<br><br>
| + | |
− | </span><span style="color: rgb(0, 119, 0);">unset(</span><span style="color: rgb(0, 0, 187);">$arr</span><span style="color: rgb(0, 119, 0);">); </span><span style="color: rgb(255, 128, 0);">// Это удаляет массив полностью<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span> </span></code>
| + | |
− | | + | |
− | <h2>Некоторые особенности работы с массивами</h2>
| + | |
− | <h3 style="color: rgb(0, 51, 153);">Преобразование в массив (тип array)</h3>
| + | |
− | <p>Для любого из типов: <b>integer</b>, <b >float</b></a>, <b>string</b>, <b>boolean</b> и <b>resource</b>, если вы преобразуете значение в массив, вы получите массив с одним элементом (с индексом 0), являющимся скалярным значением, с которого вы начали. </p>
| + | |
− | | + | |
− | <p>Если вы преобразуете в массив объект (<b>object</b>), вы получите в качестве элементов массива свойства (переменные-члены) этого объекта. Ключами будут имена переменных-членов. </p>
| + | |
− | <p>Если вы преобразуете в массив значение <b>NULL</b>, вы получите пустой массив.</p>
| + | |
− | <h3 style="color: rgb(0, 51, 153);">Сравнение массивов</h3>
| + | |
− | <p>Массивы можно сравнивать при помощи функции <b>array_diff()</b> и <strong>операторов массивов:</strong></p>
| + | |
− | <p><ins>Операторы, работающие с массивами</ins>:</p>
| + | |
− | | + | |
− | <table bgcolor="#000066" border="0" cellpadding="3" cellspacing="1">
| + | |
− | <colgroup>
| + | |
− | <col>
| + | |
− | <col>
| + | |
− | <col>
| + | |
− | </colgroup><thead>
| + | |
− | <tr>
| + | |
− | <th bgcolor="#ffffff">Пример</th>
| + | |
− | | + | |
− | <th bgcolor="#ffffff">Название</th>
| + | |
− | <th bgcolor="#ffffff">Результат</th>
| + | |
− | </tr>
| + | |
− | </thead>
| + | |
− | <tbody>
| + | |
− | <tr>
| + | |
− | <td bgcolor="#ffffff">$a + $b</td>
| + | |
− | | + | |
− | <td bgcolor="#ffffff">Объединение</td>
| + | |
− | <td bgcolor="#ffffff">Объединение массива $a и массива $b.</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td bgcolor="#ffffff">$a == $b</td>
| + | |
− | <td bgcolor="#ffffff">Равно</td>
| + | |
− | <td bgcolor="#ffffff"><b>TRUE</b>в случае, если $a и $b содержат одни и те же элементы.</td>
| + | |
− | | + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | <td bgcolor="#ffffff">$a === $b</td>
| + | |
− | <td bgcolor="#ffffff">Тождественно равно</td>
| + | |
− | <td bgcolor="#ffffff"><b>TRUE</b> в случае, если $a и $b содержат одни и те же элементы в том же самом порядке.</td>
| + | |
− | </tr>
| + | |
− | | + | |
− | <tr>
| + | |
− | <td bgcolor="#ffffff">$a != $b</td>
| + | |
− | <td bgcolor="#ffffff">Не равно</td>
| + | |
− | <td bgcolor="#ffffff"><b>TRUE</b> если массив $a не равен массиву $b.</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | | + | |
− | <td bgcolor="#ffffff">$a <> $b</td>
| + | |
− | <td bgcolor="#ffffff">Не равно</td>
| + | |
− | <td bgcolor="#ffffff"><b>TRUE</b> если массив $a не равен массиву $b.</td>
| + | |
− | </tr>
| + | |
− | <tr>
| + | |
− | | + | |
− | <td bgcolor="#ffffff">$a !== $b</td>
| + | |
− | <td bgcolor="#ffffff">Тождественно не равно</td>
| + | |
− | <td bgcolor="#ffffff"><b>TRUE</b> если массив $a не равен тождественно массиву $b.</td>
| + | |
− | </tr>
| + | |
− | </tbody>
| + | |
− | </table>
| + | |
− | <p>Пример сравнения массивов:</p>
| + | |
− | | + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $a </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(221, 0, 0);">"apple"</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">"banana"</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$b </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(0, 0, 187);">1 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"banana"</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">"0" </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"apple"</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | | + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">var_dump</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$a </span><span style="color: rgb(0, 119, 0);">== </span><span style="color: rgb(0, 0, 187);">$b</span><span style="color: rgb(0, 119, 0);">); </span><span style="color: rgb(255, 128, 0);">// bool(true)<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">var_dump</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$a </span><span style="color: rgb(0, 119, 0);">=== </span><span style="color: rgb(0, 0, 187);">$b</span><span style="color: rgb(0, 119, 0);">); </span><span style="color: rgb(255, 128, 0);">// bool(false)<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span> </span></code> </p>
| + | |
− | <h3 style="color: rgb(0, 51, 153);">Некоторые полезные практические примеры по работе с массивами</h3>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// это<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$a </span><span style="color: rgb(0, 119, 0);">= array( </span><span style="color: rgb(221, 0, 0);">'color' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'red'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'taste' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'sweet'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'shape' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'round'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'name' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'apple'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">4 </span><span style="color: rgb(255, 128, 0);">// ключом будет 0<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// полностью соответствует<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$a</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'color'</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(221, 0, 0);">'red'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">$a</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'taste'</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(221, 0, 0);">'sweet'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$a</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'shape'</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(221, 0, 0);">'round'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$a</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">'name'</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(221, 0, 0);">'apple'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">$a</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">; </span><span style="color: rgb(255, 128, 0);">// ключом будет 0<br>
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$b</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(221, 0, 0);">'a'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">$b</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(221, 0, 0);">'b'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$b</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(221, 0, 0);">'c'</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// создаст массив array(0 => 'a' , 1 => 'b' , 2 => 'c'),<br>
| + | |
− | | + | |
− | // или просто array('a', 'b', 'c')<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span></span></code></p>
| + | |
− | <p>Еще один практический пример: </p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// Массив как карта (свойств)<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">$map </span><span style="color: rgb(0, 119, 0);">= array( </span><span style="color: rgb(221, 0, 0);">'version' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'OS' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Linux'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'lang' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'english'</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'short_tags' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">true<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− |
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// исключительно числовые ключи<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$array </span><span style="color: rgb(0, 119, 0);">= array( </span><span style="color: rgb(0, 0, 187);">7</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">8</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">0</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">156</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | -</span><span style="color: rgb(0, 0, 187);">10<br>
| + | |
− |
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// это то же самое, что и array(0 => 7, 1 => 8, ...)<br>
| + | |
− | | + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$switching </span><span style="color: rgb(0, 119, 0);">= array( </span><span style="color: rgb(0, 0, 187);">10</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(255, 128, 0);">// ключ = 0<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">5 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">6</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">3 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">7</span><span style="color: rgb(0, 119, 0);">, <br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'a' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">11</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(255, 128, 0);">// ключ = 6 (максимальным числовым индексом был 5)<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'8' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(255, 128, 0);">// ключ = 8 (число!)<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">'02' </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">77</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(255, 128, 0);">// ключ = '02'<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">0 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(0, 0, 187);">12 </span><span style="color: rgb(255, 128, 0);">// значение 10 будет перезаписано на 12<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− |
| + | |
− | <br>
| + | |
− | | + | |
− | </span><span style="color: rgb(255, 128, 0);">// пустой массив<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$empty </span><span style="color: rgb(0, 119, 0);">= array();<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span></span></code></p>
| + | |
− | <p>Коллекция:</p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $colors </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(221, 0, 0);">'красный'</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">'синий'</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">'зеленый'</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">'желтый'</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | | + | |
− | <br>
| + | |
− | foreach (</span><span style="color: rgb(0, 0, 187);">$colors </span><span style="color: rgb(0, 119, 0);">as </span><span style="color: rgb(0, 0, 187);">$color</span><span style="color: rgb(0, 119, 0);">) {<br>
| + | |
− | echo </span><span style="color: rgb(221, 0, 0);">"Вам нравится $color?\n"</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | }<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span></span></code></p>
| + | |
− | <p>Результат работы рассмотренного скрипта:</p>
| + | |
− | <pre>Вам нравится красный?
| + | |
− | Вам нравится синий?
| + | |
− | Вам нравится зеленый?
| + | |
− | Вам нравится желтый?</pre>
| + | |
− | <p>Следующий пример создает начинающийся с единицы массив:</p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $firstquarter </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(0, 0, 187);">1 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">'Январь'</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">'Февраль'</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(221, 0, 0);">'Март'</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">print_r</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$firstquarter</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span></span></code></p>
| + | |
− | <p>Результат работы приведенного скрипта будет следующий: </p>
| + | |
− | <table bgcolor="#000000" border="0" cellpadding="5" cellspacing="1">
| + | |
− | <tbody>
| + | |
− | <tr bgcolor="#00ccff">
| + | |
− | | + | |
− | <td bgcolor="#def3fe"><pre>Array
| + | |
− | (
| + | |
− | [1] => 'Январь'
| + | |
− | [2] => 'Февраль'
| + | |
− | [3] => 'Март'
| + | |
− | )</pre></td>
| + | |
− | </tr>
| + | |
− | </tbody>
| + | |
− | </table>
| + | |
− | <p>Пример заполнения массива:</p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(255, 128, 0);">// заполняет массив всеми элементами директории<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$handle </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">opendir</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(221, 0, 0);">'.'</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | while (</span><span style="color: rgb(0, 0, 187);">false </span><span style="color: rgb(0, 119, 0);">!== (</span><span style="color: rgb(0, 0, 187);">$file </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">readdir</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$handle</span><span style="color: rgb(0, 119, 0);">))) {<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$files</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(0, 0, 187);">$file</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | }<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">closedir</span><span style="color: rgb(0, 119, 0);">(</span><span style="color: rgb(0, 0, 187);">$handle</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span> </span></code></p>
| + | |
− | | + | |
− | <p>Массивы упорядочены. Вы можете изменять порядок элементов, используя различные функции сортировки. Для дополнительной информации смотрите раздел <a href="/learnphp/datatypes/?array3" target="_blank">функции для работы с массивами</a>. Вы можете подсчитать количество элементов в массиве, используя функцию <a href="/functions/?count" target="_blank"><b class="function">count()</b></a>.</p>
| + | |
− | <p>Рекурсивные и многомерные массивы:</p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $fruits </span><span style="color: rgb(0, 119, 0);">= array ( </span><span style="color: rgb(221, 0, 0);">"фрукты" </span><span style="color: rgb(0, 119, 0);">=> array ( </span><span style="color: rgb(221, 0, 0);">"a" </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"апельсин"</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">"b" </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"банан"</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">"c" </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"яблоко"<br>
| + | |
− |
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 119, 0);">),<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">"числа" </span><span style="color: rgb(0, 119, 0);">=> array ( </span><span style="color: rgb(0, 0, 187);">1</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">3</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">5</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">6<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 119, 0);">),<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">"дырки" </span><span style="color: rgb(0, 119, 0);">=> array ( </span><span style="color: rgb(221, 0, 0);">"первая"</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− | | + | |
− |
| + | |
− | </span><span style="color: rgb(0, 0, 187);">5 </span><span style="color: rgb(0, 119, 0);">=> </span><span style="color: rgb(221, 0, 0);">"вторая"</span><span style="color: rgb(0, 119, 0);">,<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(221, 0, 0);">"третья"<br>
| + | |
− |
| + | |
− | </span><span style="color: rgb(0, 119, 0);">)<br>
| + | |
− | | + | |
− | );<br>
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(255, 128, 0);">// Несколько примеров доступа к значениям предыдущего массива<br>
| + | |
− | </span><span style="color: rgb(0, 119, 0);">echo </span><span style="color: rgb(0, 0, 187);">$fruits</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">"дырки"</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(0, 0, 187);">5</span><span style="color: rgb(0, 119, 0);">]; </span><span style="color: rgb(255, 128, 0);">// напечатает "вторая"<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 119, 0);">echo </span><span style="color: rgb(0, 0, 187);">$fruits</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">"фрукты"</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">"a"</span><span style="color: rgb(0, 119, 0);">]; </span><span style="color: rgb(255, 128, 0);">// напечатает "апельсин"<br>
| + | |
− | </span><span style="color: rgb(0, 119, 0);">unset(</span><span style="color: rgb(0, 0, 187);">$fruits</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">"дырки"</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(0, 0, 187);">0</span><span style="color: rgb(0, 119, 0);">]); </span><span style="color: rgb(255, 128, 0);">// удалит "первая"<br>
| + | |
− | | + | |
− | <br>
| + | |
− | // Создаст новый многомерный массив<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$juices</span><span style="color: rgb(0, 119, 0);">[</span><span style="color: rgb(221, 0, 0);">"яблоко"</span><span style="color: rgb(0, 119, 0);">][</span><span style="color: rgb(221, 0, 0);">"зеленое"</span><span style="color: rgb(0, 119, 0);">] = </span><span style="color: rgb(221, 0, 0);">"хорошее"</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span></span></code></p>
| + | |
− | <p>Обратите внимание, что при присваивании массива всегда происходит копирование значения. Чтобы копировать массив по ссылке, вам нужно использовать оператор ссылки:</p>
| + | |
− | <p class="highlight"><code><span style="color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 187);"><?php<br>
| + | |
− | $arr1 </span><span style="color: rgb(0, 119, 0);">= array(</span><span style="color: rgb(0, 0, 187);">2</span><span style="color: rgb(0, 119, 0);">, </span><span style="color: rgb(0, 0, 187);">3</span><span style="color: rgb(0, 119, 0);">);<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr2 </span><span style="color: rgb(0, 119, 0);">= </span><span style="color: rgb(0, 0, 187);">$arr1</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr2</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">; </span><span style="color: rgb(255, 128, 0);">// $arr2 изменился,<br>
| + | |
− | // $arr1 по прежнему array(2,3)<br>
| + | |
− | | + | |
− |
| + | |
− | <br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr3 </span><span style="color: rgb(0, 119, 0);">= &</span><span style="color: rgb(0, 0, 187);">$arr1</span><span style="color: rgb(0, 119, 0);">;<br>
| + | |
− | </span><span style="color: rgb(0, 0, 187);">$arr3</span><span style="color: rgb(0, 119, 0);">[] = </span><span style="color: rgb(0, 0, 187);">4</span><span style="color: rgb(0, 119, 0);">; </span><span style="color: rgb(255, 128, 0);">// теперь $arr1 и $arr3 эквивалентны<br>
| + | |
− | | + | |
− | </span><span style="color: rgb(0, 0, 187);">?></span> </span></code></p>
| + | |