通过字母数字字段对MySQL查询结果进行排序

时间:2012-04-12 04:10:33

标签: php mysql

我正在使用php查询数据库中的表。其中一个字段是一个名为“rank”的列,其数据如下:

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但是没有按照我确定的方式工作。如果可能的话,我希望将结果保存为对象形式。我将数据传递到下一步的视图。尽管如此,将对象传递给视图然后在那里完成工作是完全可以接受的。所以这毕竟不是问题。 :)

谢谢你的帮助。我希望我有意义。

3 个答案:

答案 0 :(得分:0)

使用natsort()

获取数组中的值并在PHP中对其进行排序

Natsort

答案 1 :(得分: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);

它将使用您指定的字段对数组进行排序。如果你得到多个记录,那么用它来排序是件好事。

答案 2 :(得分:0)

这将有效 -

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

来源 - Natural Sort in MySQL

相关问题