0

我正在使用 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,但还没有按照我确定的方式工作。如果可能的话,我宁愿将结果保存在对象形式中。我将在下一步中将数据传递给视图。不过,将对象传递给视图然后在那里进行工作是完全可以接受的。所以这毕竟不是问题。:)

感谢您的帮助。我希望我说得通。

4

3 回答 3

0

使用 natsort() 获取数组中的值并在 PHP 中对其进行排序

纳特索

于 2012-04-12T05:25:40.163 回答
0

这将起作用 -

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

来源 - MySQL 中的自然排序

于 2012-04-12T06:16:02.033 回答
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);

它将使用您分配的字段对数组进行排序。如果您获得多条记录,那么使用它进行排序是一件好事。

于 2012-04-12T06:07:06.277 回答