Я хочу отсортировать по полю banner_id (int). Но при запуске я получаю странный результат.
Результат этого usort() следующий:
101 - 204- 34 - 45 - 69 - и т.д.
Я должен получить:
34 - 45 -69 - 101 - 204
function usort_reorder($a,$b){
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'banner_id';
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'asc';
$result = strcmp($a[$orderby], $b[$orderby]);
return ($order==='asc') ? $result : -$result;
}
usort($data, 'usort_reorder');
Что сделать, чтобы эта сортировка работала корректно. Означает сортировку не только первой цифры, но и всей цифры. Теперь хватает только первого.
strcmp
сравнивает значения как строки, а не числа. - person Ry-♦   schedule 16.08.2017$a[$orderby]
является числовым, вы можете просто использовать$result = $a[$orderby] > $b[$orderby];
. - person xander   schedule 16.08.2017$a[$orderby] <=> $b[$orderby]
если вы используете PHP 7. - person Ry-♦   schedule 16.08.2017-1
, если$a < $b
? - person Ry-♦   schedule 16.08.2017$result = $a[$orderby] <=> $b[$orderby];
, который будет правильным (-1, 0 или 1). - person xander   schedule 16.08.2017