首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按数字排序/显示,然后按字母顺序排列/显示

按数字排序/显示,然后按字母顺序排列/显示
EN

Stack Overflow用户
提问于 2011-09-25 19:22:01
回答 2查看 129关注 0票数 0

我有一张这类数字的列表,其中的字母存储在mySQL表中。

1 2a 2b 2c 3a 3b 4 5a 5b 10

有的有信,有的没有。

对于上面的示例数据,我希望它在页面上显示如下

代码语言:javascript
复制
1
2a / 2b / 2c
3a / 3b
4
5a / 5b
10

下面是我所拥有的基础知识,您可以在这个基础上将它们直接列在页面上。

代码语言:javascript
复制
$sql = mysql_query("SELECT * FROM data") or die(mysql_error());

while($row = mysql_fetch_assoc($sql))
{
    $dataID = $row['dataID'];
    echo $dataID . "<br />";
}

我也许可以用一些子字和if语句来做这件事,但是我有一种感觉,它可以用一种更好的方法.可能有正则表达式

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-27 02:59:48

一个从这里开始帮了我的忙,给了我这段不错的代码。做得很好。

代码语言:javascript
复制
$query = "select dataID, dataID * 1 as ord FROM data order by ord, dataID";
$result = mysql_query($query);

$heading = null; // remember last heading, initialize to a value that will never exist as data
while(list($dataID,$ord) = mysql_fetch_row($result)){
    if($heading != $ord){
        // a new (or first) heading found
        if($heading != null){
            // not the first heading, close out the previous section
            echo implode (' / ',$data) . '<br />';
        }
        $heading = $ord; // remember new heading
        // start a new section
        $data = array();
    }
    // handle each piece of data
    $data[] = $dataID;
}
// close out the last section
echo implode (' / ',$data) . '<br />';
票数 0
EN

Stack Overflow用户

发布于 2011-09-25 19:27:46

看看纳提德()函数。

该函数实现了一种排序算法,该算法在维护键/值关联的同时,以人的方式对字母数字字符串进行排序。这被描述为一种“自然秩序”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7547960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档