0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Функции ksort и krsort </a></li>
1
<ul><li><a>Функции ksort и krsort </a></li>
2
<li><a>Функции sort и rsort</a></li>
2
<li><a>Функции sort и rsort</a></li>
3
<li><a>Функции asort и arsort</a></li>
3
<li><a>Функции asort и arsort</a></li>
4
<li><a>Функция PHP usort</a></li>
4
<li><a>Функция PHP usort</a></li>
5
<li><a>Shuffle</a></li>
5
<li><a>Shuffle</a></li>
6
</ul><p>Одна из типичных задач, с которыми сталкивается разработчик на PHP, - это сортировка массива. В языке программирования PHP можно выполнять сортировку (sorting) массива и по значению, и по ключу, можно делать естественную сортировку, сортировку многомерных и ассоциативных массивов (arrays) и т. д. Для всего этого предусмотрено множество функций. Кратко рассмотрим некоторые из них.</p>
6
</ul><p>Одна из типичных задач, с которыми сталкивается разработчик на PHP, - это сортировка массива. В языке программирования PHP можно выполнять сортировку (sorting) массива и по значению, и по ключу, можно делать естественную сортировку, сортировку многомерных и ассоциативных массивов (arrays) и т. д. Для всего этого предусмотрено множество функций. Кратко рассмотрим некоторые из них.</p>
7
<p>Сортировка позволяет выполнить упорядочение (ordering) данных в какой-нибудь структуре данных, в нашем случае - в массиве. Получение нужного порядка сортировки может быть необходимо для решения задач, поставленных перед разработчиком.</p>
7
<p>Сортировка позволяет выполнить упорядочение (ordering) данных в какой-нибудь структуре данных, в нашем случае - в массиве. Получение нужного порядка сортировки может быть необходимо для решения задач, поставленных перед разработчиком.</p>
8
<h2>Функции ksort и krsort </h2>
8
<h2>Функции ksort и krsort </h2>
9
<p>Вышеописанные функции могут применяться в PHP для выполнения сортировки массива по ключу. Работает это следующим образом:</p>
9
<p>Вышеописанные функции могут применяться в PHP для выполнения сортировки массива по ключу. Работает это следующим образом:</p>
10
<p>Порядок сортировки (ordering) будет следующим:</p>
10
<p>Порядок сортировки (ordering) будет следующим:</p>
11
<p><em> ( </em></p>
11
<p><em> ( </em></p>
12
<p><em> [1] => Москва </em></p>
12
<p><em> [1] => Москва </em></p>
13
<p><em> [3] => Санкт-Петербург </em></p>
13
<p><em> [3] => Санкт-Петербург </em></p>
14
<p><em> [5] => Волгоград </em></p>
14
<p><em> [5] => Волгоград </em></p>
15
<p><em>) </em></p>
15
<p><em>) </em></p>
16
<p><em> ( </em></p>
16
<p><em> ( </em></p>
17
<p><em> [5] => Волгоград </em></p>
17
<p><em> [5] => Волгоград </em></p>
18
<p><em> [3] => Санкт-Петербург </em></p>
18
<p><em> [3] => Санкт-Петербург </em></p>
19
<p><em> [1] => Москва </em></p>
19
<p><em> [1] => Москва </em></p>
20
<p><em>) </em></p>
20
<p><em>) </em></p>
21
<p>Обратите внимание, что элементы массива были отсортированы не по алфавиту,<strong>а по ключу</strong>, в нашем случае - это нужный порядок (order) цифр. Таким образом данные были упорядочены (ordered, sorted) с учетом ключей.</p>
21
<p>Обратите внимание, что элементы массива были отсортированы не по алфавиту,<strong>а по ключу</strong>, в нашем случае - это нужный порядок (order) цифр. Таким образом данные были упорядочены (ordered, sorted) с учетом ключей.</p>
22
<h2>Функции sort и rsort</h2>
22
<h2>Функции sort и rsort</h2>
23
<p>Функция sort (как и resort) сортирует (sorts) заданный массив<strong>по значению</strong>, не сохраняя ключи. Рассмотрим пример:</p>
23
<p>Функция sort (как и resort) сортирует (sorts) заданный массив<strong>по значению</strong>, не сохраняя ключи. Рассмотрим пример:</p>
24
<p>$array = array(</p>
24
<p>$array = array(</p>
25
<p> 3 => 'Санкт-Петербург',</p>
25
<p> 3 => 'Санкт-Петербург',</p>
26
<p> 1 => 'Москва',</p>
26
<p> 1 => 'Москва',</p>
27
<p> 5 => 'Волгоград'</p>
27
<p> 5 => 'Волгоград'</p>
28
<p>);</p>
28
<p>);</p>
29
<p>// Выполняем сортировку PHP массива по возрастанию:</p>
29
<p>// Выполняем сортировку PHP массива по возрастанию:</p>
30
<p>sort($array);</p>
30
<p>sort($array);</p>
31
<p>print_r($array);</p>
31
<p>print_r($array);</p>
32
<p>// Выполняем сортировку PHP массива по убыванию:</p>
32
<p>// Выполняем сортировку PHP массива по убыванию:</p>
33
<p>rsort($array);</p>
33
<p>rsort($array);</p>
34
<p>print_r($array);</p>
34
<p>print_r($array);</p>
35
<p>А теперь любопытно взглянуть на результат сортировки массива в PHP по значению. Код возвращает следующий результат:</p>
35
<p>А теперь любопытно взглянуть на результат сортировки массива в PHP по значению. Код возвращает следующий результат:</p>
36
<p><em>( </em></p>
36
<p><em>( </em></p>
37
<p><em> [0] => Волгоград </em></p>
37
<p><em> [0] => Волгоград </em></p>
38
<p><em> [1] => Москва </em></p>
38
<p><em> [1] => Москва </em></p>
39
<p><em> [2] => Санкт-Петербург </em></p>
39
<p><em> [2] => Санкт-Петербург </em></p>
40
<p><em>) </em></p>
40
<p><em>) </em></p>
41
<p><em>( </em></p>
41
<p><em>( </em></p>
42
<p><em> [0] => Санкт-Петербург </em></p>
42
<p><em> [0] => Санкт-Петербург </em></p>
43
<p><em> [1] => Москва </em></p>
43
<p><em> [1] => Москва </em></p>
44
<p><em> [2] => Волгоград </em></p>
44
<p><em> [2] => Волгоград </em></p>
45
<p><em>) </em></p>
45
<p><em>) </em></p>
46
<p>Мы видим, что<strong>значения были упорядочены в алфавитном порядке</strong>(в прямом, а потом в обратном).</p>
46
<p>Мы видим, что<strong>значения были упорядочены в алфавитном порядке</strong>(в прямом, а потом в обратном).</p>
47
<h2>Функции asort и arsort</h2>
47
<h2>Функции asort и arsort</h2>
48
<p>Если надо, чтобы функция при сортировке (ordering) все-таки сохраняла ключи, пригодится function asort либо arsort.</p>
48
<p>Если надо, чтобы функция при сортировке (ordering) все-таки сохраняла ключи, пригодится function asort либо arsort.</p>
49
<p>$array = array(</p>
49
<p>$array = array(</p>
50
<p> 3 => 'Санкт-Петербург',</p>
50
<p> 3 => 'Санкт-Петербург',</p>
51
<p> 1 => 'Москва',</p>
51
<p> 1 => 'Москва',</p>
52
<p> 5 => 'Волгоград'</p>
52
<p> 5 => 'Волгоград'</p>
53
<p>);</p>
53
<p>);</p>
54
<p>// возрастание:</p>
54
<p>// возрастание:</p>
55
<p>asort($array);</p>
55
<p>asort($array);</p>
56
<p>print_r($array);</p>
56
<p>print_r($array);</p>
57
<p>// убывание:</p>
57
<p>// убывание:</p>
58
<p>arsort($array);</p>
58
<p>arsort($array);</p>
59
<p>print_r($array);</p>
59
<p>print_r($array);</p>
60
<p>Итог следующий:</p>
60
<p>Итог следующий:</p>
61
<p><em>( </em></p>
61
<p><em>( </em></p>
62
<p><em> [5] => Волгоград </em></p>
62
<p><em> [5] => Волгоград </em></p>
63
<p><em> [1] => Москва </em></p>
63
<p><em> [1] => Москва </em></p>
64
<p><em> [3] => Санкт-Петербург </em></p>
64
<p><em> [3] => Санкт-Петербург </em></p>
65
<p><em>) </em></p>
65
<p><em>) </em></p>
66
<p><em>( </em></p>
66
<p><em>( </em></p>
67
<p><em> [3] => Санкт-Петербург </em></p>
67
<p><em> [3] => Санкт-Петербург </em></p>
68
<p><em> [1] => Москва </em></p>
68
<p><em> [1] => Москва </em></p>
69
<p><em> [5] => Волгоград </em></p>
69
<p><em> [5] => Волгоград </em></p>
70
<p><em>) </em></p>
70
<p><em>) </em></p>
71
<p>Мы опять упорядочили данные по значению в прямом и обратном алфавитном порядке. Механизм работы похож на sort, но есть разница, которая заключается в том, что<strong>была сохранена связка "ключ-значение"</strong>. Что это может значить на практике? К примеру, функция подойдет при упорядочении тех же ассоциативных массивов в PHP, то есть в ситуациях, когда<strong>связь в структуре важна</strong>и логична. </p>
71
<p>Мы опять упорядочили данные по значению в прямом и обратном алфавитном порядке. Механизм работы похож на sort, но есть разница, которая заключается в том, что<strong>была сохранена связка "ключ-значение"</strong>. Что это может значить на практике? К примеру, функция подойдет при упорядочении тех же ассоциативных массивов в PHP, то есть в ситуациях, когда<strong>связь в структуре важна</strong>и логична. </p>
72
<h2>Функция PHP usort</h2>
72
<h2>Функция PHP usort</h2>
73
<p>С помощью usort можно отсортировать многомерный массив по необходимому полю. То есть у нас есть возможность выполнить sorting, не сохраняя связку "ключ-значение", но с учетом пользовательской функцией, имя которой можно передать при вызове usort в качестве второго параметра: usort($array, ‘function’).</p>
73
<p>С помощью usort можно отсортировать многомерный массив по необходимому полю. То есть у нас есть возможность выполнить sorting, не сохраняя связку "ключ-значение", но с учетом пользовательской функцией, имя которой можно передать при вызове usort в качестве второго параметра: usort($array, ‘function’).</p>
74
<p>Саму функцию описывают отдельно. Как может выглядеть код:</p>
74
<p>Саму функцию описывают отдельно. Как может выглядеть код:</p>
75
<p>function mySort($a, $b)</p>
75
<p>function mySort($a, $b)</p>
76
<p>{</p>
76
<p>{</p>
77
<p> if ($a['id'] == $b['id']) return 0;</p>
77
<p> if ($a['id'] == $b['id']) return 0;</p>
78
<p> return $a['id'] > $b['id'] ? 1 : -1;</p>
78
<p> return $a['id'] > $b['id'] ? 1 : -1;</p>
79
<p>}</p>
79
<p>}</p>
80
<p>Далее надо будет сделать вызов функции usort($array, ‘mySort’) в нужном месте кода, а в качестве 1-го параметра указать имя переменной массива.</p>
80
<p>Далее надо будет сделать вызов функции usort($array, ‘mySort’) в нужном месте кода, а в качестве 1-го параметра указать имя переменной массива.</p>
81
<h2>Shuffle</h2>
81
<h2>Shuffle</h2>
82
<p>При необходимости можно выполнить и смешивание. Для этого используется функция shuffle. В результате ее работы все значения смешиваются в случайном порядке, причем ключи не сохраняются.</p>
82
<p>При необходимости можно выполнить и смешивание. Для этого используется функция shuffle. В результате ее работы все значения смешиваются в случайном порядке, причем ключи не сохраняются.</p>
83
<p>Давайте вернемся к нашим городам и выполним смешивание два раза. Почему два? Это позволит убедиться в определенной случайности процесса перемешивания. В нашем случае дважды будет получен разный результат:</p>
83
<p>Давайте вернемся к нашим городам и выполним смешивание два раза. Почему два? Это позволит убедиться в определенной случайности процесса перемешивания. В нашем случае дважды будет получен разный результат:</p>
84
<p><em>Источники:</em></p>
84
<p><em>Источники:</em></p>
85
<ul><li><em>https://snipp.ru/php/sort-array;</em></li>
85
<ul><li><em>https://snipp.ru/php/sort-array;</em></li>
86
<li><em>http://cccp-blog.com/koding/sortirovka-massiva-php-razlichnymi-sposobami.</em></li>
86
<li><em>http://cccp-blog.com/koding/sortirovka-massiva-php-razlichnymi-sposobami.</em></li>
87
</ul><p>Хотите знать намного больше? Добро пожаловать на курс!</p>
87
</ul><p>Хотите знать намного больше? Добро пожаловать на курс!</p>
88
<a></a>
88
<a></a>