PHP

Как отсортировать в алфавитном порядке фамилии пятерых людей? Их имена и Отчество сократить до инициалов

Тюрина Леокадия Робертовна
Лапина Федосья Ильинична
Шершова Аполлинария Степановна
Сергеева Леокадия Артемовна
Тюрин Болеслав Ильич
я сортирую в запросе скль.. если ты данные не с бд береш и у тебя на входе масив.
То сначала сортируешь свой масив, пример сортировки:
$src = array('абрикос',
'дуб',
'бук',
'ясень',
'пень',
'помидор',
'ягель',
'blau oder braun',
'ангина',
'брысь'
);
asort($src);
$dst = array();
foreach ($src as $buf) {
$lit = mb_substr($buf, 0, 1, 'UTF-8');
$dst[$lit][] = $buf;
}
var_dump($dst);
Далее разбиваешь на 3 масива фамия отчество имя
из 2 последних массивов оставляешь 1 заглавную букву и добавляешь точку в цикле.
потом собираешь 3 масива в единный.
Антон Соколов
Антон Соколов
2 479
Лучший ответ
"Ручками" сможешь? Ну - и вперёд!
вот пример который вам подойдет

$array = array("Тюрина Леокадия Робертовна",
"Лапина Федосья Ильинична",
"Шершова Аполлинария Степановна",
"Сергеева Леокадия Артемовна",
"Тюрин Болеслав Ильич" );
function FT( &$elem )
{
$elem =explode( " ", $elem ); // строку в массив

// объединяем фамилию и инициалы имя и отчество
$elem = $elem[0] . " " . mb_substr($elem[1] , 0, 1 ) . " " . mb_substr( $elem[2], 0, 1 );

return $elem;
}

array_walk( $array , "FT" ); // применяем свою функцию к массиву
sort( $array, SORT_NATURAL | SORT_FLAG_CASE );
print_r( $array ); // выводим

// результат массив
Array
(
[0] => Лапина Ф И
[1] => Сергеева Л А
[2] => Тюрин Б И
[3] => Тюрина Л Р
[4] => Шершова А С
)