2012-04-12 118 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