Сортировка массивов в php

Операции с массивами

Один из случаев ключевой операции с массивами, а именно его создание мы рассмотрели выше. А как ещё можно создать массив? Самый простой случай, это создание пустого массива:

Создание и модификация массива

Пустой массив может служить заготовкой под определённую коллекцию данных. Конечно его можно не определять заранее и создать прямо в цикле где он должен заполняться, но тогда это будет менее понятный код.

Вы так же можете заполнить массив на лету, например данными из базы данных:

Перебор массивов

С другой стороны готовый массив можно перебрать и например вывести его элементы на экран:

Вообще в php существует больше 70 функций для работы с массивами, однако в большинстве случаев вы будет использовать не больше двадцати. Приведу некоторые из них:

  • in_array — проверяет присутствие элемента в массиве
  • key_exists  — проверяет присутствует ли в массиве указанный ключ или индекс
  • array_search  — осуществляет поиск заданного значения в массиве и возвращает ключ первого найденного значения
  • array_merge — объединяет 2 и более массивов в один
  • array_chunk — разбивает массив на части

Сортировка массива

Отдельным блоком может идти операции связанные с сортировкой массив. В PHP существует несколько встроенных функций для быстрой сортировки массивов, например по возрастанию/убыванию значения или в алфавитном порядке. Причём сортировка может идти как по ключам массива так и по значениям. Одной из интересных возможностей предоставляет функция , при помощи которой вы можете отсортировать элементы массива используя собственный алгоритм сравнения. Рассмотрим пример:

Как вы понимаете данный пример максимально упрощён. Но внутри вашей функции  можно реализовать любой алгоритм сравнения элементов. Главное правильно возвращать значение, ноль — если элементы не отличаются и их не надо менять местами и 1 или -1 если нужно изменить порядок элементов.

Вы так же можете пробросить в тело функции  внешнюю переменную используя анонимную функцию и ключевое слово :

Грубо говоря сортировка по возрастанию шла пока значение  попадало в диапазон от 0 до 3-х.

Меняем порядок сортировки

Вы можете пропустить (опционально) flag-аргумент после аргумента массива чтобы менять порядок сортировки:

SORT_ASC сортировка по возрастаниюSORT_DESC сортировка по убыванию

Тут сортируем $directors по возрастанию, затем $titles по убыванию:

 $directors = array( "Stanley Kubrick", "Alfred Hitchcock", "Martin Scorsese", "Stanley Kubrick" ); $titles = array( "Full Metal Jacket", "Rear Window", "Mean Streets", "A Clockwork Orange" ); $years = array( 1987, 1954, 1973, 1971 ); array_multisort( $directors, SORT_ASC, $titles, SORT_DESC, $years ); print_r( $directors ); echo "<br />"; print_r( $titles ); echo "<br />"; print_r( $years ); echo "<br />"; 

Вот что вышло: заметьте, что «Full Metal Jacket» теперь перед «A Clockwork Orange»:

Array ( => Alfred Hitchcock => Martin Scorsese => Stanley Kubrick => Stanley Kubrick ) Array ( => Rear Window => Mean Streets => Full Metal Jacket => A Clockwork Orange ) Array ( => 1954 => 1973 => 1987 => 1971 )

Сортировка многомерных массивов

Сортировка через array_multisort() проходит по первому элементу каждого массива. Если 2 значения одинаковы, сортирвка идёт по 2у элементу и тп.

Это пример, который показывает, как это работает Сортировка идет по director, потом по title, потом по year:

 $movies = array( array( "director" => "Alfred Hitchcock", "title" => "Rear Window", "year" => 1954 ), array( "director" => "Stanley Kubrick", "title" => "Full Metal Jacket", "year" => 1987 ), array( "director" => "Martin Scorsese", "title" => "Mean Streets", "year" => 1973 ), array( "director" => "Stanley Kubrick", "title" => "A Clockwork Orange", "year" => 1971 ) ); array_multisort( $movies ); echo "<pre>"; print_r( $movies ); echo "</pre>"; 

Результат:

Array ( => Array ( => Alfred Hitchcock => Rear Window => 1954 )

=> Array ( => Martin Scorsese => Mean Streets => 1973 )

=> Array ( => Stanley Kubrick => A Clockwork Orange => 1971 )

=> Array ( => Stanley Kubrick => Full Metal Jacket => 1987 )

Как видите, array_multisort() отсортирвал массив по director. Когда имя режиссёра повторилось, («Stanley Kubrick»), сортировка пошла по title.

Чтобы отсортровать в обратном порядке, укажите SORT_DESC-флаг как второй аргумент array_multisort(). Просто!

Итог

В этом уроке мы посмотрели на простые PHP-функции для сортровки массива:

* sort() и rsort() для сортровки индексируемых массивов * asort() и arsort() для сортровки асоциативных массивов * ksort() и krsort() для сортровки ассоциативнх массивов по ключу * array_multisort() для сортировки для сортировки сложных и многомерных массивов

______________

Наткнулся тут на интересный блог – блог про блоги так сказать) Автор обзоры делает)

Naikom » Кодинг » PHP

Основные функции сортировки массива в PHP

Для сортировки массива в PHP вы можете использовать встроенные функции и . Разница между ними заключается в том, что сортирует массив в обратном порядке (по убыванию), а – в обычном порядке (по возрастанию).

Давайте посмотрим, как это работает. Отсортируем массив с помощью функции , прежде чем отобразить его содержимое. Код выглядит так:

<?php
sort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

Результат будет следующим:

0 - black
1 - blue
2 - green
3 - red
4 - white

Как вы могли заметить, эта функция назначает новые ключи для элементов в массиве. Функция сортировки удаляет все существующие ключи, которые вы могли назначить, вместо того, чтобы просто переупорядочивать ключи. Решение этой проблемы рассмотрим позже.

Если вам нужен обратный порядок, единственное, что вам нужно сделать, это использовать вместо этого функцию , например, так:

<?php
rsort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

И результат будет следующий:

0 - white
1 - red
2 - green
3 - blue
4 - black

Теперь давайте узнаем, как решить проблему с потерей ключей, что важно, если вы используете ассоциативные массивы

Сортировка ассоциативных массивов в PHP

Как мы видели ранее, функции и не подойдут, если нам нужно сохранить ключи нашего массива. К счастью, в PHP есть встроенные функции и для этой проблемы. Функции называются и . По примеру вышерассмотренных функций, сортирует по возрастанию, а – по убыванию. Кроме этого, данные функции поддерживают сохранение ключей массива. Итак, давайте посмотрим, как эти функции справляются с сортировкой данных в массиве. Повторим наш тест с использованием новых функций:

<?php
asort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

Результат будет следующим:

night - black
sky - blue
grass - green
apple - red
wall - white

Теперь результат выглядит намного лучше. Чтобы получить сортировку в обратном порядке, просто используйте функцию вместо .

Но что делать, если вы хотите отсортировать ассоциированные массивы на основе ключей? Нет проблем, давайте посмотрим как это сделать.

Как сортировать массив по ключу в PHP

Вы уже вероятно догадались, что в PHP есть функция сортировки ассоциативного массива по ключам. Этими функциями являются и . Как и прежде, сортирует массив в обратном порядке. Использование такое же, как и раньше, поэтому код будет следующим:

<?php
ksort($spisokTsvetov);
foreach ($spisokTsvetov as $key => $value) {
  echo '<p>' . $key . ' - ' . $value . '</p>';
}
?>

Результат будет следующим:

apple - red
grass - green
night - black
sky - blue
wall - white

Использовать функцию довольно просто.

Помимо рассмотренных функций в PHP есть и другие, более сложные функции сортировки:

  • – сортировка нескольких или многомерных массивов.
  • – сортировка массива с использованием нечувствительного к регистру алгоритма «естественного порядка»
  • – сортировка массива с использованием алгоритма «естественного порядка».
  • – сортирует массив с помощью пользовательской функции сравнения и поддерживает связь с индексами.
  • – сортирует массив по ключам, используя пользовательскую функцию сравнения
  • – сортирует массив по значениям, используя пользовательскую функцию сравнения

Бонусный навык: поиск в массиве с помощью PHP

Представьте себе, что у вас есть большой массив, который заполняется из файла или кода. И вы не знаете, существует ли данное значение в массиве или нет. И если оно существует, то было бы хорошо получить ключ этого элемента.

Массив рассмотрим тот же (что в самом начале статьи).

Теперь, если вы хотите узнать, существует ли значение , вы можете использовать встроенную в PHP функцию . Ниже пример ее использования:

<?php
echo 'Blue is ' . array_search("blue", $spisokTsvetov);
?>

В результате вы получите следующее значение:

Blue is sky

На сегодня все, спасибо, что читаете нас!

  • 1144

  • 68

  • Опубликовано 09/12/2019

  • PHP, Уроки программирования

sort()- Sort Array in Ascending Order

There is the following function sorts the elements of a numerical array in the ascending numerical order:

<?php
$numbers = ;
sort($numbers);
print_r($numbers);
?>

1
2
3
4
5

<?php

$numbers=21,16,71,14,7,25;

sort($numbers);

print_r($numbers);

?>

Output:

Array ( => 7 => 14 => 16 => 21 => 25 => 71 )

1 Array(=>71=>142=>163=>214=>255=>71)

Let’s see another example with a PHP array that holds the names of different Fruits names. furthermore, the code reveals how this function sorts the array in the alphabetical order:

<?php
$fruits = ;
sort($fruits);
print_r($fruits);
?>

1
2
3
4
5

<?php

$fruits=’Graps’,’Mango’,’Apple’;

sort($fruits);

print_r($fruits);

?>

Output:

Array ( => Apple => Graps => Mango )

1 Array(=>Apple1=>Graps2=>Mango)

ksort()- Sort Array in Ascending Order, According to Key

The is the following function that sorts an associative array in ascending order, as per according to the key:

<?php
$age = array(«Giselle»=>»25», «Amara»=>»15», «Josephine»=>»28», «Penelope»=>»18» );
ksort($age);

foreach($age as $x => $x_value) {
print_r («Key=» . $x . «, Value=» . $x_value);
print_r («<br>»);
}
?>

1
2
3
4
5
6
7
8
9

<?php

$age=array(«Giselle»=>»25″,»Amara»=>»15″,»Josephine»=>»28″,»Penelope»=>»18»);

ksort($age);

foreach($ageas$x=>$x_value){

print_r(«Key=».$x.», Value=».$x_value);

print_r(«<br>»);

}

?>

Output:

Key=Amara, Value=15
Key=Giselle, Value=25
Key=Josephine, Value=28
Key=Penelope, Value=18

1
2
3
4

Key=Amara,Value=15

Key=Giselle,Value=25

Key=Josephine,Value=28

Key=Penelope,Value=18

Операции с массивами

Последнее обновление: 12.03.2021

Рассмотрим некоторые встроенные наиболее распространенные функции, которые мы можем применять при работе с массивами.

Функция is_array

Функция is_array() проверяет, является ли переменная массивом, и если является, то возвращает , иначе возвращает
. Например:

$users = ;
$isArray = is_array($users);
echo ($isArray==true)?"это массив":"это не массив";

Функции count/sizeof

Функция count() и sizeof() получают количество элементов массива:

$users = ;
$number = count($users);
// то же самое, что
// $number = sizeof($users);
echo "В массиве users $number элемента/ов";

Функции shuffle

Функция shuffle перемешивает элементы массивы случайным образом:

$users = ;
shuffle($users);
print_r($users);
// один из возможных вариантов
//Array (  => Bob  => Tom  => Alice  => Sam )

Функции compact

Функция compact позволяет создать из набора переменных ассоциативный массив, где
ключами будут имена переменных:

<?php

$model = "Apple II";
$producer = "Apple";
$year = 1978;

$data = compact("model", "producer", "year");
print_r($data);
// получится следующий вывод
// Array (  => Apple II  => Apple  => 1978 ) 
?>

Функция compact получает в скобках набор переменных. Каждая переменная указывается в кавычка без знака $. Результатом функции является новый массив.

Сортировка массивов

В PHP имеются два типа сортировки: сортировка строк по алфавиту и сортировка чисел по возрастанию/убыванию. Если сортируемые значения представляют строки,
то они сортируются по алфавиту, если числа — то они сортируются в порядке возрастания чисел. PHP по умолчанию самостоятельно выбирает тип сортировки.

Для сортировки по возрастанию используется функция asort:

$users = ;
asort($users);
print_r($users);
// вывод отсортированного массива
// Array (  => Alice  => Bob  => Sam  => Tom )

В данном случае значения массива представляют строки, поэтому PHP выберет сортировку по алфавиту. Однако с помощью дополнительного параметра мы можем явно указать
интерпретатору PHP тип сортировки. Данный параметр может принимать три значения:

  • : автоматический выбор сортировки

  • : числовая сортировка

  • : сортировка по алфавиту

Укажем явно тип сортировки:

asort($users, SORT_STRING);

Чтобы отсортировать массив в обратном порядке, применяется функция arsort:

arsort($users);

Сортировка по ключам

Функция производит сортировку по значениям элементов, но также существует и еще и сортировка по ключам. Она представлена функцией
ksort:

$states = ;
asort($states);
print_r($states);
// массив после asort	- сортировка по значениям элементов
// Array (  => Berlin  => Madrid  => Paris ) 

ksort($states);
print_r($states);
// массив после ksort - сортировка по ключам элементов
//  Array (  => Paris  => Berlin  => Madrid )

Сортировка по ключам в обратном порядке выполняется функцией krsort():

krsort($states);

Естественная сортировка

Хотя выше описанные функции сортировки прекрасно выполняют свою работу, но их возможностей все-таки недостаточно. Например, отсортируем по возрастанию следующий массив:

<?php
$os = array("Windows 7", "Windows 8", "Windows 10");
asort($os);
print_r($os);
// результат
// Array (  => Windows 10  => Windows 7  => Windows 8 ) 
?>

Так как значения представляют строки, то PHP сортирует по алфавиту. Однако подобная сортировка не учитывает числа и регистр. Поэтому значение
«Windows 10» будет идти в самом начале, а не в конце, как должно было быть. И для решения этой проблемы в PHP есть функция natsort(),
которая выполняет естественную сортировку:

<?php
$os = array("Windows 7", "Windows 8", "Windows 10");
natsort($os);
print_r($os);
// результат
// Array (  => Windows 7  => Windows 8  => Windows 10) 
?>

Если нам надо еще при этом, чтобы сортировка не учитывала регистр, то мы можем применить функцию natcasesort():

natcasesort($os);

НазадВперед

Функция sort(); — Сортировка массива по возрастанию и по алфавиту

Структура:

sort( $Массив, $Флаг );

Функция сортирует заданный ей массив $Массив по возрастанию. Функция предназначена для работы со списками. Списки это обычные массивы, ключи которых начинаются с нуля. Функции можно задать необязательный аргумент $Флаг, который манипулирует тем как именно должно происходить сортировка. Рассмотрим описание аргумента $Флаг:

SORT_REGULAR – Сортировка по умолчанию работы функции

SORT_NUMERIC — Сортировка чисел, по возрастанию

SORT_STRING — Сортировка строк, по алфавиту

Рассмотрим пример, у нас есть массив где хранятся в хаотичном виде данные о количестве пар студента в разные года учебы.

<?php $Leasons = array(83, 100, 72); sort($Leasons); foreach($Leasons as $num) { 	$palce++; 	echo "Курс: {$palce} - {$num} пар<br />"; } ?>

Результат работы скрипта:

Курс: 1 - 72 пар Курс: 2 - 83 пар Курс: 3 - 100 пар

Если бы мы не применили функцию sort(); результат работы был бы следующим:

Курс: 1 - 83 пар Курс: 2 - 100 пар Курс: 3 - 72 пар

Многомерные массивы

Как вы уже знаете, элементы массива могут содержать в качестве значения данные любого типа, строки, числа, логические, в том числе и другие массивы. Массив состоящий из других массивов называется многомерным или вложенным массивом. На практике используется 2-3 уровня вложенности для хранения каких-либо связанных структурных данных (например данных о покупателях магазина или каталоге товаров), обработка массивов большей вложенности усложняется и используется не часто.

Давайте разберёмся как создавать и взаимодействовать с многомерными массивами.

Создание многомерных массивов

В первую очередь создадим простой двумерный массив сотрудников организации:

Как видите используя многомерные массивы можно строить довольно сложные структуры данных с которыми в последствии предстоит работать нашему веб-приложению.

Доступ к элементам многомерного массива

Рассмотрим как получить доступ к элементам многомерного массива. В качестве примера возьмём выше описанные массивы сотрудников компании. Но перед этим предлагаю набросать небольшую функцию, которая позволит удобно просматривать содержимое переменных в вашем коде. Я часто использую её в работе:

Эта функция простая обёртка для просмотра содержимого переменной при помощи  или  тегов . Берите на вооружение.

И так, давайте узнаем имена и возраст всех сотрудников из первого двумерного массива:

Обработка многомерного массива

Один из примеров обработки массива был представлен выше, когда мы просто вывели на экран содержимое многомерного массива в удобном для пользователя виде. Однако это далеко не всё что можно делать с массивами. Например мы можешь осуществить некий поиск по элементам узнать сколько сотрудников старше 30 лет работает в нашей компании:

Здесь мы применили функцию array_walk_recursive() которая обходит каждый элемент массива вне зависимости от его вложенности и применяет к элементу пользовательскую функцию. В данном случае лямбда функция проверяет что текущий элемент это возраст и что его значение больше 30 и наращивает определённый во вне счётчик. Чтобы получить доступ в область видимости где применён счётчик используется конструкция и ссылка на переменную . В результате вы увидите сообщение: Количество сотрудников старше 30 лет: 3.

Существует множество примеров обработки массивов в PHP, но они выходят за рамки данной статьи. 

Функция array_multisort

Оказывается разработчики PHP уже давным давно все придумали до нас. Оказывается есть функция array_multisort. Как работает эта функция:
Грубо говоря каждый массив будет отсортирован в соответствии с предыдущим массивом. Вообщем пример:

//Сортируемый масив
$array_main=array(
‘foo’,
‘bar’,
‘foobar’,
);

//Определяющий массив
$array_id=array(
3,
1,
2,
);

array_multisort($array_id, $array_main);

var_dump($array_main);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

//Сортируемый масив

$array_main=array(

‘foo’,

‘bar’,

‘foobar’,

);

 
//Определяющий массив

$array_id=array(

3,

1,

2,

);

array_multisort($array_id,$array_main);

var_dump($array_main);

Выведет:

array(4) {
=> string(3) «bar»
=> string(3) «foobar»
=> string(3) «foo»
}

1
2
3
4
5

array(4){

=>string(3)»bar»

1=>string(3)»foobar»

2=>string(3)»foo»

}

А это как раз то что нам надо! Возвращаемся к тестам на скорость:

$data_year=array();
//Генерируем «определяющий» массив
foreach($data as $key=>$arr){
$data_year=$arr;
}

for($i=0; $i<100000; $i++){
$data_tmp=$data;
array_multisort($data_year, SORT_NUMERIC, $data_tmp);
}

1
2
3
4
5
6
7
8
9
10

$data_year=array();

//Генерируем «определяющий» массив

foreach($data as$key=>$arr){

$data_year$key=$arr’year’;

}
 

for($i=;$i<100000;$i++){

$data_tmp=$data;

array_multisort($data_year,SORT_NUMERIC,$data_tmp);

}

Засекаем. Получаем: 3.87 сек. Это рекорд!

Ну то что это самый быстрый вариант мы определили. Это хорошо. А как насчет расширяемости? Как к примеру заставить сортировать массив по двум ключам? Оказывается с этой функцией очень просто! Достаточно добавить еще один «определяющий массив», вот так:

$data_author=array();
foreach($data as $key=>$arr){
$data_author=$arr;
}

$data_year=array();
foreach($data as $key=>$arr){
$data_year=$arr;
}

array_multisort($data_year, SORT_NUMERIC, $data_author, $data);
var_export($data);

1
2
3
4
5
6
7
8
9
10
11
12

$data_author=array();

foreach($data as$key=>$arr){

$data_author$key=$arr’author’;

}
 

$data_year=array();

foreach($data as$key=>$arr){

$data_year$key=$arr’year’;

}
 

array_multisort($data_year,SORT_NUMERIC,$data_author,$data);

var_export($data);

На выходе получим вот такой массив:

array(
0 => array(‘text’ => ‘str3’, ‘year’ => ‘2009’, ‘author’ => 20, ),
1 => array(‘text’ => ‘str8’, ‘year’ => ‘2009’, ‘author’ => 20, ),
2 => array(‘text’ => ‘str1’, ‘year’ => ‘2010’, ‘author’ => 10, ),
3 => array(‘text’ => ‘str5’, ‘year’ => ‘2010’, ‘author’ => 20, ),
4 => array(‘text’ => ‘str4’, ‘year’ => ‘2010’, ‘author’ => 30, ),
5 => array(‘text’ => ‘str2’, ‘year’ => ‘2011’, ‘author’ => 10, ),
6 => array(‘text’ => ‘str6’, ‘year’ => ‘2011’, ‘author’ => 10, ),
7 => array(‘text’ => ‘str7’, ‘year’ => ‘2011’, ‘author’ => 20, ),
);

1
2
3
4
5
6
7
8
9
10

array(

=>array(‘text’=>’str3′,’year’=>’2009’,’author’=>20,),

1=>array(‘text’=>’str8′,’year’=>’2009’,’author’=>20,),

2=>array(‘text’=>’str1′,’year’=>’2010’,’author’=>10,),

3=>array(‘text’=>’str5′,’year’=>’2010’,’author’=>20,),

4=>array(‘text’=>’str4′,’year’=>’2010’,’author’=>30,),

5=>array(‘text’=>’str2′,’year’=>’2011’,’author’=>10,),

6=>array(‘text’=>’str6′,’year’=>’2011’,’author’=>10,),

7=>array(‘text’=>’str7′,’year’=>’2011’,’author’=>20,),

);

Как видите функция справилась со своей задачей. Наш массив отсортирован сначала по year, затем по author. А с помощью различных флагов типа SORT_DESC, SORT_ASC и тд можно добится любой сортировки (про них подробнее смотрите в мане), так что это на мой взгляд самый лучший вариант для использования в своих скриптах.

Минусы

??

Плюсы

  • Лучшая скорость
  • Расширяемость
  • Функциональность

Пользовательская сортировка

Также мы можем задать и свои порядок сортировки, то есть создать пользовательскую сортировку.

Для этого также в php предусмотрены специальные функции.

Для пользовательской сортировки списков предусмотрена функция usort().

Она будет принимать два аргумента. Первый аргумент – это наш массив; второй аргумент – будет содержать имя функции, сравнивающей два элемента.

Функция сравнения будет принимать две переменные и должна возвращать одно из значений:

1 – если первый элемент сравнения больше второго;

-1 – если второй больше первого;

0 – если элементы равны.

Таким образом мы, например, можем отсортировать элементы массива по возрастанию их длины.

Для этого сначала объявим сам массив, который будет содержать строковые элементы различной длины.

Далее создадим пользовательскую функцию, которая будет принимать две переменные и сравнивать их длины, а в результате сравнения будет возвращать одно из значений: 1, -1 или 0.

После этого воспользуемся функцией для пользовательской сортировки usort(). Ей передадим в качестве аргументов: имя нашего массива и имя функции, которую мы создали для сравнения элементов.

После всего этого можно выводить результат на экран, чтобы убедиться, что наши элементы отсортировались по возрастанию их длины.

<?
$Mass = array('Андрей', 'Яна', 'Катя');
function check_length($str1,$str2){
$length1 = strlen($str1);
$length2 = strlen($str2);
if($length1 == $length2):
return 0;
elseif($length1 < $length2):
return -1;
else:
return 1;
endif;	
}
usort($Mass,"check_length");
print_r($Mass);
?>

Получим мы следующий результат. Элементы нашего массива отсортированы в порядке увеличения их длины.

Также мы можем сделать пользовательскую сортировку ассоциативного массива по его ключам. Для этого нам понадобится функция uksort() и сам ассоциативный массив.

Давайте оставим пользовательскую функцию той же, то есть сравниваем длину ключей.

<?
$Mass='яна';
$Mass='андрей';
$Mass='катя';
function check_length($str1,$str2){
$length1 = strlen($str1);
$length2 = strlen($str2);
if($length1 == $length2):
return 0;
elseif($length1 < $length2):
return -1;
else:
return 1;
endif;	
}
uksort($Mass,"check_length");
print_r($Mass);
?>

Ключи элементов массива отсортированы по возрастанию их длины.

И также мы можем создать пользовательскую сортировку ассоциативного массива по значениям его элементов. В этом нам поможет функция uasort().

Принцип все тот же.

<?
$Mass='яна';
$Mass='андрей';
$Mass='катя';
function check_length($str1,$str2){
$length1 = strlen($str1);
$length2 = strlen($str2);
if($length1 == $length2):
return 0;
elseif($length1 < $length2):
return -1;
else:
return 1;
endif;	
}
uasort($Mass,"check_length");
print_r($Mass);
?>

Теперь массив отсортирован по увеличению длин его значений.

Конечно же, пользовательская функция может быть и другой, например, она может приводить значения к общему регистру или делать какие-либо другие вещи.

Чтобы хорошенько понять, как работает пользовательская сортировка, нужно попрактиковаться и попробовать написать какую-то свою функцию сравнения.

Однако, теперь, я думаю, у Вас есть полное представление о том, как можно сортировать элементы массива и каким образом эти отсортированные элементы использовать.

Практикуйтесь, пишите Ваши комментарии и делитесь статьей с друзьями при помощи кнопок социальных сетей.

Если Вы еще не подписаны на обновления блога, то подписывайтесь. Форма подписки находится ниже.

С Вами была Анна Котельникова. До встречи в следующих статьях.

Overview: PHP Sort Array

PHP has several functions which are deal with sorting arrays, and this functions to help sort it all out.There are the following main differences:

  • Some PHP sort Array based on the array keys, whereas others by the values, like as:
  • Whether or not the correlation between the keys and values is maintained after the sort, therefore, means the keys are reset numerically (0,1,2 …)
  • The order of the sort: alphabetical, low to high , high to low , natural, numerical, random, or user-defined
  • All of those functions act directly on the array variable itself, such as opposed to returning a new sorted array
  • If any of these kind sort functions evaluate two (2) members as equal then the order is undefined (means that the sorting is not stable).
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector