Я знаю, что в php есть функции natsort () и natcasesort () для сортировки элементов массива в естественном порядке. Я пытаюсь отсортировать следующие элементы.
array[0]= '10. xyz';
array[1]= '13. xyz';
array[2]= '2. xyz';
array[3]= '1a. xyz';
array[4]= '6. xyz';
array[5]= '1b. xyz';
array[6]= '4a. xyz';
array[7]= '4b. xyz';
теперь, если я применяю natsort (), '10 .. 'и '13 ..' ставятся выше '1a ..'. Как я могу заставить свой php-код думать, что «10 ..» больше, чем «1a ...», а «1a ...» должно быть вверху? правильный вывод в моем конкретном случае:
'1a. xyz';
'1b. xyz';
'2. xyz';
'4a. xyz';
'4b. xyz';
'6. xyz';
'10. xyz';
'13. xyz';
Я использовал собственный алгоритм, но он делает то же самое ... он помещает '10 ..' перед '1a ...'. вот мой пользовательский функционал:
function cmp($a, $b) {
$a_ex=explode(".",$a);
$b_ex=explode(".",$b);
if ($a_ex[0] == $b_ex[0] ) {
return 0;
}
return ($a_ex[0] < $b_ex[0]) ? -1 : 1;
}