PHP и порядок элементов массива с числами и текстами

Я использую 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?

0

Решение

Это сортировка для 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'
0

Другие решения

PHP получил функции сортировки: asort () для сортировки по значению и ksort () для сортировки по ключу.

asort($arr); // now sorted by value.
ksort($arr); // now sorted by key.
0

Поскольку вы используете индексный массив, вы можете сортировать в алфавитном порядке с помощью функции asort (), но для других вопросов вам нужно создать функцию, т.е. Порядок, в котором вы хотите отсортировать, а затем применить функцию uasort (). Ссылка на php.net/manual/en/functions.uasort.php проверьте приведенную выше ссылку, которую вы можете очистить

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector