Я использую PHP. У меня есть массив, который имеет 1-256 элементов. Вот пример:
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
Вопрос 1:
Я хотел бы заказать элементы в алфавитном порядке по именам. Итак, результат должен быть таким:
Albert
(1.) Ben
Bill
(20.) John
(5.) Martin
(12.) Mike
(2.) Paul
Вопрос 2:
Я также хотел бы заказать элементы по 1) номерам и 2) именам следующим образом:
(1.) Ben
(2.) Paul
(5.) Martin
(12.) Mike
(20.) John
Albert
Bill
Как я могу сделать работу с PHP?
Это сортировка для Question 1
:
<?php
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
usort($arr, function($a, $b){
$a = explode(' ', $a, 2);
$a = (count($a) > 1) ? $a[1] : $a[0];
$b = explode(' ', $b, 2);
$b = (count($b) > 1) ? $b[1] : $b[0];
return strcmp($a, $b);
});
print_r($arr); // // Print array sorted for 'Question 1'
@РЕДАКТИРОВАТЬ
И сортировка для Question 2
:
$arr[] = "(1.) Ben";
$arr[] = "Albert";
$arr[] = "Bill";
$arr[] = "(2.) Paul";
$arr[] = "(5.) Martin";
$arr[] = "(12.) Mike";
$arr[] = "(20.) John";
usort($arr, function($a, $b){
$a = explode(' ', $a, 2);
$b = explode(' ', $b, 2);
if(count($a) > 1 && count($b) > 1)
{
$a = str_replace(['(', ')', '.'], '', $a[0]);
$b = str_replace(['(', ')', '.'], '', $b[0]);
return $a > $b;
}
else
{
return strcmp($a[0], $b[0]);
}
});
print_r($arr); // Print array sorted for 'Question 2'
PHP получил функции сортировки: asort () для сортировки по значению и ksort () для сортировки по ключу.
asort($arr); // now sorted by value.
ksort($arr); // now sorted by key.
Поскольку вы используете индексный массив, вы можете сортировать в алфавитном порядке с помощью функции asort (), но для других вопросов вам нужно создать функцию, т.е. Порядок, в котором вы хотите отсортировать, а затем применить функцию uasort (). Ссылка на php.net/manual/en/functions.uasort.php проверьте приведенную выше ссылку, которую вы можете очистить