Відмінності між версіями «Робота з асоціативними масивами в PHP»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(Замінено вміст на «Прохання не плагіатити»)
 
(не показані 28 проміжних версій 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">&lt;?</font><font color="#0000BB">php</font><br>
+
<font color="#FF8000">//&nbsp;Ассоциативный&nbsp;массив</font><br>
+
<font color="#008000">$</font><font color="#0000BB">names</font><font color="#008000">[</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Иван&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">names</font><font color="#008000">[</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Николай&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">name</font><font color="#008000">s[</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Петр&quot;</font><font color="#008000">;</font><br>
+
<font color="#FF8000">//&nbsp;В&nbsp;данном&nbsp;примере:&nbsp;фамилии&nbsp;-&nbsp;ключи&nbsp;ассоциативного&nbsp;массива</font><br>
+
<font color="#FF8000">//&nbsp;,&nbsp;а&nbsp;имена&nbsp;-&nbsp;элементы&nbsp;массива names</font><br>
+
<font color="#008000">?&gt;</font></font></code>
+
<p>Доступ до елементів одновимірних асоціативних масивів здійснюється так само, як і до елементів звичайних масивів, і має назву<ins>доступом по ключу</ins>: </p>
+
<code>echo $names[&quot;Иванов&quot;];</code>
+
 
+
<p><ins>Багатовимірні асоціативні масиви</ins>:</p>
+
<p>Багатовимірні асоціативні масиви можуть містити кілька ключів, відповідних конкретному індексу асоціативного масиву. Розглянемо приклад багатовимірного асоціативного масиву:</p>
+
<code><font color="#000000"><font color="#008000">&lt;?</font><font color="#0000BB">php</font><br>
+
<font color="#FF8000">//&nbsp;Многомерный&nbsp;массив</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
+
color="#FF0000">&quot;Ivanov&quot;</font><font color="#008000">]</font><font
+
color="#0000BB">&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font
+
color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;Иванов&nbsp;И.И.&quot;</font><font
+
color="#008000">,</font><font color="#0000BB">&nbsp;</font><font
+
color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font
+
color="#FF0000">&quot;25&quot;</font><font color="#008000">,</font><font
+
color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font
+
color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font
+
color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
+
color="#FF0000">&quot;Petrov&quot;</font><font color="#008000">]</font><font
+
color="#0000BB">&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font
+
color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;Петров&nbsp;П.П.&quot;</font><font
+
color="#008000">,</font><font color="#0000BB">&nbsp;</font><font
+
color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font
+
color="#FF0000">&quot;34&quot;</font><font color="#008000">,</font><font
+
color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font
+
color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font
+
color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font
+
color="#FF0000">&quot;Sidorov&quot;</font><font color="#008000">]</font><font
+
color="#0000BB">&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font
+
color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидоров&nbsp;С.С.&quot;</font><font
+
color="#008000">,</font><font color="#0000BB">&nbsp;</font><font
+
color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font
+
color="#FF0000">&quot;47&quot;</font><font color="#008000">,</font><font
+
color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font
+
color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font
+
color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font
+
color="#008000">);</font><br>
+
<font color="#008000">?&gt;</font></font></code>
+
<p>Багатовимірні масиви схожі на записи в мові Pascal або структури в мові C.</p>
+
<p>Доступ до елементів багатовимірного асоціативного масиву здійснюється таким чином:</p>
+
<code>echo $A[&quot;Ivanov&quot;][&quot;name&quot;]; // Выводит Иванов И.И.<br>echo $A[&quot;Petrov&quot;][&quot;email&quot;]; // Выводит [email protected]</code>
+
 
+
<p>Як ви вже помітили, для створення багатовимірного асоціативного масиву ми використовували спеціальну функцію <strong>array</strong>, ми її розглянемо пізніше, коли будемо розглядати операції над масивами.</p>
+
<p>Асоціативні багатовимірні масиви можна створювати і класичним способом, хоча це не так зручно:</p>
+
 
+
<code><font color="#000000"><font color="#008000">&lt;?</font><font color="#0000BB">php</font><br>
+
<font color="#FF8000">//&nbsp;Многомерный&nbsp;ассоциативный&nbsp;массив</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Ivanov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Иванов&nbsp;И.И.&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Ivanov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;25&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Ivanov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">;
+
</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Petrov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Петров&nbsp;П.П.&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Petrov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;34&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Petrov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">;
+
</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Sidorov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;Сидоров&nbsp;С.С.&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Sidorov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;47&quot;</font><font color="#008000">;</font><br>
+
<font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Sidorov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">]=</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">;
+
</font><br>
+
<font color="#FF8000">//&nbsp;Получаем&nbsp;доступ&nbsp;к&nbsp;ключам&nbsp;многомерного&nbsp;ассоциативного&nbsp;массива</font><br>
+
<font color="#0000BB">echo&nbsp;</font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Ivanov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">].</font><font color="#FF0000">&quot;&lt;br&gt;&quot;</font><font color="#008000">;</font><font color="#0000BB">&nbsp;</font><font color="#FF8000">//&nbsp;Выводит&nbsp;Иванов&nbsp;И.И.</font><br>
+
<font color="#0000BB">echo&nbsp;</font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Sidorov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">].</font><font color="#FF0000">&quot;&lt;br&gt;&quot;</font><font color="#008000">;</font><font color="#0000BB">&nbsp;</font><font color="#FF8000">//&nbsp;Выводит&nbsp;47</font><br>
+
<font color="#0000BB">echo&nbsp;</font><font color="#008000">$</font><font color="#0000BB">A</font><font color="#008000">[</font><font color="#FF0000">&quot;Petrov&quot;</font><font color="#008000">][</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">].</font><font color="#FF0000">&quot;&lt;br&gt;&quot;</font><font color="#008000">;</font><font color="#0000BB">&nbsp;</font><font color="#FF8000">//&nbsp;Выводит&nbsp;</font><u><font color="#0000FF">[email protected]</font></u><br>
+
<font color="#008000">?&gt;</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]=&quot;Александр&quot;;<br>$names[1]=&quot;Николай&quot;;<br>$names[2]=&quot;Яков&quot;;</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>Якщо нам потрібні тільки &quot;Николай&quot; и &quot;Яков&quot;, тоді ми можемо зробити так:</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">&lt;?</font><font color="#0000BB">php</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;пустой&nbsp;массив:</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">();</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;список&nbsp;с&nbsp;тремя&nbsp;элементами.&nbsp;Индексы&nbsp;начинаются&nbsp;с&nbsp;нуля:</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr2&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">);</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;ассоциативный&nbsp;массив&nbsp;с&nbsp;тремя&nbsp;элементами:</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr3&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иван&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петр&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидор&quot;</font><font color="#008000">);</font><br>
+
<font color="#FF8000">//&nbsp;Создает&nbsp;многомерный&nbsp;ассоциативный&nbsp;массив:</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Иванов&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;24&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Петров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;34&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">$</font><font color="#0000BB">arr4&nbsp;</font><font color="#008000">=</font><font color="#0000BB">&nbsp;array</font><font color="#008000">(</font><font color="#FF0000">&quot;name&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;Сидоров&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;age&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;47&quot;</font><font color="#008000">,</font><font color="#0000BB">&nbsp;</font><font color="#FF0000">&quot;email&quot;</font><font color="#008000">=&gt;</font><font color="#FF0000">&quot;</font><u><font color="#0000FF">[email protected]</font></u><font color="#FF0000">&quot;</font><font color="#008000">);</font><br>
+
<font color="#008000">?&gt;</font></font></code>
+
 
+
<h3 style="color: green;">Операции  над массивами</h3>
+
<p style="color: rgb(0, 51, 153);"><strong>Сортировка массивов</strong></p>
+
<p>Начнем с самого простого — сортировки массивов. В <strong>PHP</strong> для этого существует очень много функций. С их помощью можно сортировать ассоциативные массивы и списки в порядке возрастания или убывания, а также в том порядке, в каком вам необходимо — посредством пользовательской функции сортировки.</p>
+
<p class="mtx1" style="color: green;"><strong>Сортировка массива по значениям c помощью функций asort() и arsort():</strong></p>
+
<p><a name="asort"></a>Функция <a href="/functions/?asort" target="_blank"><strong>asort()</strong></a> сортирует массив, указанный в ее параметре, так, чтобы его значения шли в алфавитном (если это строки) или в возрастающем (для чисел) порядке.<br>
+
 
+
  При этом сохраняются связи между ключами и соответствующими им значениями, т. е. некоторые пары ключ=&gt;значение просто "всплывают" наверх, а некоторые — наоборот, "опускаются". Например:</p>
+
<p class="highlight"><code>$A=array("a"=&gt;"Zero","b"=&gt;"Weapon","c"=&gt;"Alpha","d"=&gt;"Processor");<br>
+
  asort($A);<br>
+
  foreach($A as $k=&gt;$v) echo "$k=&gt;$v ";<br>
+
 
+
  // выводит "c=&gt;Alpha d=&gt;Processor b=&gt;Weapon a=&gt;Zero"<br>
+
// как видим, поменялся только порядок пар ключ=&gt;значение</code></p>
+
<p><a name="arsort"></a>Функция <strong><a href="/functions/?arsort" target="_blank">arsort()</a></strong> выполняет то же самое, за одним исключением: она упорядочивает массив не по возрастанию, а по убыванию.</p>
+
<p class="mtx1" style="color: green;"><strong>Сортировка по ключам с помощью функций ksort() и krsort():</strong></p>
+
 
+
<p>Функция <strong><a href="/functions/?ksort" target="_blank">ksort()</a></strong> практически идентична функции <strong><a href="#asort">asort()</a></strong>, с тем различием, что сортировка осуществляется не по значениями, а по ключам (в порядке возрастания).<br>
+
Например:</p>
+
<p class="highlight"><code>$A=array("d"=&gt;"Zero", "c"=&gt;"Weapon", "b"=&gt;"Alpha", "a"=&gt;"Processor");<br>
+
  ksort($A);<br>
+
 
+
  for(Reset($A); list($k,$v)=each($A);) echo "$k=&gt;$v ";<br>
+
// выводит "a=&gt;Processor b=&gt;Alpha c=&gt;Weapon d=&gt;Zero"</code></p>
+
<p>Функция для сортировки по ключам в обратном порядке называется <strong><a href="/functions/?krsort" target="_blank">krsort()</a></strong> и применяется точно в таком же контексте, что и <strong>ksort()</strong>.</p>
+
 
+
<p class="mtx1" style="color: green;"><strong><a name="uksort"></a>Сортировка по ключам при помощи функции uksort():</strong></p>
+
<p>Довольно часто нам приходится сортировать что-то по более сложному критерию, чем просто по алфавиту. Например, пусть в <strong>$Files</strong> хранится список имен файлов и подкаталогов в текущем каталоге. Возможно, мы захотим вывести этот список не только в лексикографическом порядке, но также и чтобы все каталоги предшествовали файлам. В этом случае нам стоит воспользоваться функцией <strong><a href="/functions/?uksort" target="_blank">uksort()</a></strong>, написав предварительно функцию сравнения с двумя параметрами, как того требует <strong>uksort()</strong>.</p>
+
<p class="highlight"><code><font color="#000000"><font color="#008000">&lt;?</font><font color="#0000bb">php</font><br>
+
<font color="#ff8000">//&nbsp;Эта&nbsp;функция&nbsp;должна&nbsp;сравнивать&nbsp;значения&nbsp;$f1&nbsp;и&nbsp;$f2&nbsp;и&nbsp;возвращать:</font><br>
+
 
+
<font color="#ff8000">//&nbsp;-1,&nbsp;если&nbsp;$f1&lt;$f2,</font><br>
+
<font color="#ff8000">//&nbsp;0,&nbsp;если&nbsp;$f1==$f2</font><br>
+
<font color="#ff8000">//&nbsp;1,&nbsp;если&nbsp;$f1&gt;$f2</font><br>
+
 
+
<font color="#ff8000">//&nbsp;Под&nbsp;&lt;&nbsp;и&nbsp;&gt;&nbsp;понимается&nbsp;следование&nbsp;этих&nbsp;имен&nbsp;в&nbsp;выводимом&nbsp;списке</font><br>
+
<font color="#008000">function</font><font color="#0000bb">&nbsp;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">&nbsp;</font><font color="#ff8000">//&nbsp;Каталог&nbsp;всегда&nbsp;предшествует&nbsp;файлу</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">&nbsp;</font><font color="#008000">&amp;&amp;</font><font color="#0000bb">&nbsp;</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">&nbsp;</font><font color="#008000">return</font><font color="#0000bb">&nbsp;</font><font color="#008000">-</font><font color="#0000ff">1</font><font color="#008000">;</font><br>
+
 
+
<font color="#ff8000">//&nbsp;Файл&nbsp;всегда&nbsp;идет&nbsp;после&nbsp;каталога</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">&nbsp;</font><font color="#008000">&amp;&amp;</font><font color="#0000bb">&nbsp;is_dir</font><font color="#008000">($</font><font color="#0000bb">f2</font><font color="#008000">))</font><font color="#0000bb">&nbsp;</font><font color="#008000">return</font><font color="#0000bb">&nbsp;</font><font color="#0000ff">1</font><font color="#008000">;</font><br>
+
 
+
<font color="#ff8000">//&nbsp;Иначе&nbsp;сравниваем&nbsp;лексикографически</font><br>
+
<font color="#008000">if($</font><font color="#0000bb">f1</font><font color="#008000">&lt;$</font><font color="#0000bb">f2</font><font color="#008000">)</font><font color="#0000bb">&nbsp;</font><font color="#008000">return</font><font color="#0000bb">&nbsp;</font><font color="#008000">-</font><font color="#0000ff">1</font><font color="#008000">;</font><font color="#0000bb">&nbsp;</font><font color="#008000">elseif($</font><font color="#0000bb">f1</font><font color="#008000">&gt;$</font><font color="#0000bb">f2</font><font color="#008000">)</font><font color="#0000bb">&nbsp;</font><font color="#008000">return</font><font color="#0000bb">&nbsp;</font><font color="#0000ff">1</font><font color="#008000">;</font><font color="#0000bb">&nbsp;</font><font color="#008000">else</font><font color="#0000bb">&nbsp;</font><font color="#008000">return</font><font color="#0000bb">&nbsp;</font><font color="#0000ff">0</font><font color="#008000">;</font><br>
+
 
+
<font color="#008000">}</font><br>
+
<font color="#ff8000">//&nbsp;Пусть&nbsp;$Files&nbsp;содержит&nbsp;массив&nbsp;с&nbsp;ключами&nbsp;—&nbsp;именами&nbsp;файлов</font><br>
+
<font color="#ff8000">//&nbsp;в&nbsp;текущем&nbsp;каталоге.&nbsp;Отсортируем&nbsp;его.</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">&nbsp;</font><font color="#ff8000">//&nbsp;передаем&nbsp;функцию&nbsp;сортировки&nbsp;"по&nbsp;ссылке"</font><br>
+
<font color="#008000">?&gt;</font></font></code></p>
+
<p>Конечно, связи между ключами и значениями функцией <strong>uksort()</strong> сохраняются, т. е., опять же, некоторые пары просто "всплывают" наверх, а другие — "оседают".</p>
+
 
+
<p class="mtx1" style="color: green;"><strong>Сортировка по значениям при помощи функции uasort()</strong></p>
+
<p>Функция <strong><a href="/functions/?uasort" target="_blank">uasort()</a></strong> очень похожа на <a href="#uksort"><strong>uksort()</strong></a>, с той разницей, что сменной (пользовательской) функции сортировки "подсовываются" не ключи, а очередные значения из массива. При этом также сохраняются связи в парах ключ=&gt;значение.</p>
+
<p class="mtx1" style="color: green;"><strong>Переворачивание массива с помощью функции array_reverce()</strong></p>
+
<p>Функция <a href="/functions/?array_reverse" target="_blank"><strong>array_reverse()</strong></a> возвращает массив, элементы которого следуют в обратном порядке относительно массива, переданного в параметре. При этом связи между ключами и значениями, конечно, не теряются. Например, вместо того, чтобы ранжировать массив в обратном порядке при помощи <strong><a href="#arsort">arsort()</a></strong>, мы можем отсортировать его в прямом порядке, а затем перевернуть:</p>
+
 
+
<p class="highlight"><code>$A=array("a"=&gt;"Zero","b"=&gt;"Weapon","c"=&gt;"Alpha","d"=&gt;"Processor");<br>
+
  asort($A);<br>
+
$A=array_reverse($A);</code></p>
+
<p>Конечно, указанная последовательность работает дольше, чем один-единственный вызов <strong>arsort()</strong>.</p>
+
<p class="mtx1" style="color: green;"><strong>Сортировка списка при помощи функций sort() и rsort()</strong></p>
+
 
+
<p>Эти две функции предназначены в первую очередь для сортировки списков. </p>
+
<p>Функция <a href="/functions/?sort" target="_blank"><strong>sort()</strong></a> сортирует список (разумеется, по значениям) в порядке возрастания, а <a href="/functions/?rsort" target="_blank"><strong>rsort()</strong></a> — в порядке убывания. Пример для функции <strong>sort()</strong>:</p>
+
<p class="highlight"><code><font color="#000000"><font color="#008000">&lt;?</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">&nbsp;</font><font color="#ff0000">"20"</font><font color="#008000">,</font><font color="#0000bb">&nbsp;</font><font color="#ff0000">"10"</font><font color="#008000">,</font><font color="#0000bb">&nbsp;</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">&nbsp;</font><font color="#008000">$</font><font color="#0000bb">i</font><font color="#008000">&lt;</font><font color="#0000bb">count</font><font color="#008000">($</font><font color="#0000bb">A</font><font color="#008000">);</font><font color="#0000bb">&nbsp;</font><font color="#008000">$</font><font color="#0000bb">i</font><font color="#008000">++)</font><font color="#0000bb">&nbsp;echo&nbsp;</font><font color="#ff0000">"$A[$i]"</font><font color="#008000">.</font><font color="#ff0000">"&lt;br&gt;"</font><font color="#008000">;</font><br>
+
 
+
        <font color="#ff8000">//&nbsp;выводит&nbsp;10&nbsp;20&nbsp;30&nbsp;40</font><br>
+
        <font color="#008000">?&gt;</font></font></code></p>
+
<p class="mtx1" style="color: green;"><strong>Перемешивание списка с помощью функции shuffle()</strong></p>
+
<p>Функция <a href="/functions/?shuffle" target="_blank"><strong>shuffle()</strong></a> "перемешивает" список, переданный ей первым параметром, так, чтобы его значения распределялись случайным образом. Обратите внимание, что, во-первых, изменяется сам массив, а во вторых, ассоциативные массивы восприимаются как списки. Пример:</p>
+
 
+
<p class="highlight"><code>$A=array(10,20,30,40,50);<br>
+
  shuffle($A);<br>
+
foreach($A as $v) echo "$v ";</code></p>
+
<p>Приведенный фрагмент кода выводит числа <strong>10, 20, 30, 40 и 50</strong> в случайном порядке.</p>
+
<p>Выполнив этот фрагмент несколько раз, вы можете обнаружить, что от запуска к запуску очередность следования чисел не изменяется. Это свойство обусловлено тем, что функция <strong>shuffle()</strong> использует стандартный генератор случайных чисел, который перед работой необходимо инициализировать при<br>
+
 
+
помощи вызова <a href="/functions/?srand" target="_blank"><strong>srand()</strong></a>.</p>
+
<p style="color: rgb(0, 51, 153);"><strong>Операции с ключами и значениями массива</strong></p>
+
<p><strong>array_flip(array $arr)</strong></p>
+
<p>Функция <strong><a href="/functions/?array_flip" target="_blank">array_flip()</a></strong> "пробегает" по массиву и меняет местами его ключи и значения. Исходный массив <strong>$arr</strong> не изменяется, а результирующий массив просто возвращается.<br>
+
  Конечно, если в массиве присутствовали несколько элементов с одинаковыми значениями, учитываться будет только последний из них:</p>
+
 
+
<p class="highlight"><code>$A=array("a"=&gt;"aaa", "b"=&gt;"aaa", "c"=&gt;"ccc");<br>
+
  $A=array_flip($A);<br>
+
// теперь $A===array("aaa"=&gt;"b", "ccc"=&gt;"c");</code></p>
+
<p class="mtx1" style="color: green;"><strong>array_keys(array $arr [,mixed $SearchVal])</strong></p>
+
<p>Функция <a href="/functions/?array_keys" target="_blank"><strong>array_keys()</strong></a> возвращает список, содержащий все ключи массива <strong>$arr</strong>. Если задан необязательный параметр <strong>$SearchVal</strong>, то она вернет только те ключи, которым соответствуют значения <strong>$SearchVal</strong>.</p>
+
 
+
<p>Фактически, эта функция с заданным вторым параметром является обратной по отношению к оператору <strong>[]</strong> — извлечению значения по его ключу.</p>
+
<p class="mtx1" style="color: green;"><strong>array_values(array $arr)</strong></p>
+
<p>Функция <strong><a href="/functions/?array_values" target="_blank">array_values()</a></strong> возвращает список всех значений в ассоциативном массиве <strong>$arr</strong>. Очевидно, такое действие бесполезно для списков, но иногда оправдано для хэшей.</p>
+
<p class="mtx1" style="color: green;"><strong>in_array(mixed $val, array $arr)</strong></p>
+
<p>Функция <a href="/functions/?in_array" target="_blank"><strong>in_array()</strong></a> возвращает <strong>true</strong>, если элемент со значением <strong>$val</strong> присутствует в массиве <strong>$arr</strong>.<br>
+
 
+
  Впрочем, если вам часто приходится проделывать эту операцию, подумайте: не лучше ли будет воспользоваться ассоциативным массивом и хранить данные в его ключах, а не в значениях? На этом вы можете сильно выиграть в быстродействии.</p>
+
<p class="mtx1" style="color: green;"><strong>array_count_values(list $List)</strong></p>
+
<p>Функция <strong><a href="/functions/?array_count_values" target="_blank">array_count_values()</a> </strong>подсчитывает, сколько раз каждое значение встречается в списке <strong>$List</strong>, и возвращает ассоциативный массив с ключами — элементами списка и значениями — количеством повторов этих элементов. Иными словами, функция <strong>array_count_values()</strong> подсчитывает частоту появления значений в списке <strong>$List</strong>. Пример:</p>
+
 
+
<p class="highlight"><code>$List=array(1, "hello", 1, "world", "hello");<br>
+
  array_count_values($array);<br>
+
// возвращает array(1=&gt;2, "hello"=&gt;2, "world"=&gt;1)</code></p>
+

Поточна версія на 11:14, 17 червня 2018

Прохання не плагіатити