当记录类似于12.108.90时,以升序显示记录

时间:2014-06-26 05:16:51

标签: php mysql

当记录如下所示时,如何使用PHP / MySQL以升序显示记录:

12.108.90, 
7.60.109.3,
56.23.45.78.9,
1.7.9.08 ?

这些记录是多个频率编号,我想按升序显示它们,但我没有得到正确的格式。我当前的查询如下所示:

select * from revision ORDER BY revid DESC

revid记录类似于:12.8.907.889.56.9014.78.016.67.87.12。如何更正查询以按升序对记录进行排序?

1 个答案:

答案 0 :(得分:0)

尝试使用usort

例如:

$array = array(
     '12.108.90', 
     '7.60.109.3',
     '56.23.45.78.9',
     '1.7.9.08',
);

usort($array, function($a, $b) {
     $a = explode('.', $a);
     $b = explode('.', $b);

     foreach($a as $key => $valuea) {
         if(!isset($b[$key])) {
             return 1;
         }
         $valueb = (int)$b[$key];
         $valuea = (int)$valuea;

         if($valuea === $valueb) {
             continue;
         }

         return $valuea - $valueb;
     }

     return -1;
});

var_dump($array);