php usort() 导致奇怪的结果

php usort() results in strange result

我想在字段 banner_id (int) 上排序。但是当 运行 我得到一个奇怪的结果。

usort() 的结果如下:

101 - 204- 34 - 45 - 69 - etc.

我必须得到:

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');

如何正确排序 运行。意味着不仅对第一个数字进行排序,而且对整个数字进行排序。现在只需要第一个。

function sortScripts($a, $b)
{
    return $a['order'] - $b['order'];
}

如果您想要相反的顺序,请使用 $b-$a

如果有问题的数字超过 PHP 的整数范围,return ($a < $b) ? -1 : (($a > $b) ? 1 : 0) 更可靠。

您可以查看此 link 以获得更多理解 strcmp equivelant for integers (intcmp) in PHP