2012-04-12 115 views
0

我使用php查询数据库中的表。领域之一是所谓的“等级”栏中,而且具有数据如下所示:由字母数字字段对MySQL查询结果排序

none 
1-bronze 
2-silver 
3-gold 
... 
10-ambassador 
11-president 

我希望能够基于该“排名”列中的结果进行排序。任何结果,其中字段是“没有”得到排除,所以那些没有因素正如你可能已经猜到,现在结果回来是这样的:

1-bronze 
10-ambassador 
11-president 
2-silver 
3-gold 

当然,我想为它被排序以便它如下所示:

1-bronze 
2-silver 
3-gold 
... 
10-ambassador 
11-president 

现在查询作为对象返回。我已经尝试了不同的排序选项,如natsort,sort,array_multisort,但没有按照我确信的方式工作。如果可能,我宁愿将结果保留为对象形式。我将数据传递给下一步中的视图。尽管将物体传递给视图然后在那里完成工作是完全可以接受的。所以这毕竟不是问题。 :)

谢谢你的帮助。我希望我有道理。

+6

听起来数量和描述应该是单独的列... – 2012-04-12 04:12:44

+0

所以有可能在排名列多个数据点?如果是这样,听起来像架构被设计成inccorectly。 – 2012-04-12 04:13:55

+0

等级1,2,3和青铜,银,金在DB的不同领域吧? – 2012-04-12 04:15:15

回答

0

如何使用该功能进行排序。我认为,如果你得到你应该对象转换为数组的对象,然后使用这个

function arraySubSort($array, $subkey, $sort = 'asort') 
{ 
    foreach($array as $key => $value) 
    { 
    $temp[$key] = strtolower($value[$subkey]); 
    } 

    $sort($temp); 
    foreach($temp as $key => $value) 
    { 
    $result[] = $array[$key]; 
    } 
    return $result; 
} 

$data = $your_array; 
$field = 'ranks'; 
arraySubSort($data,$field); 

它将与分配领域中的数组进行排序。如果您正在获取多个记录,则可以使用它进行排序。

0

使用natsort获取值数组中的排序在PHP()

Natsort

0

这将工作 -

SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric 

源 - Natural Sort in MySQL