php usort()导致奇怪的结果

时间:2017-08-16 09:12:24

标签: php usort

我想对字段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');

如何才能使此类正确运行。意味着不仅要排序第一个数字而且要排序整个数字。现在它只需要第一个。

1 个答案:

答案 0 :(得分:0)

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

如果您想要颠倒顺序,请使用$b-$a

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

您可以查看此链接以了解更多情况strcmp equivelant for integers (intcmp) in PHP