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
我想在字段 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