我有一个这类数字的列表,其中的字母存储在mySQL表中
1 2a 2b 2c 3a 3b 4 5a 5b 10
有些人有来信,有些则没有。
对于上面的示例数据,我希望它能像这样显示在页面上
1
2a / 2b / 2c
3a / 3b
4
5a / 5b
10
以下是我所拥有的基础知识,因此您可以将您的示例基于此直接在页面上列出
$sql = mysql_query("SELECT * FROM data") or die(mysql_error());
while($row = mysql_fetch_assoc($sql))
{
$dataID = $row['dataID'];
echo $dataID . "<br />";
}
我可以用一些子串和if语句来做这个,但我觉得它可以用更好的方式完成......可能用正则表达式
答案 0 :(得分:1)
查看natsort()函数。
此函数实现了一个排序字母数字的排序算法 在保持关键/价值的同时,人类的方式 关联。这被描述为“自然排序”。
答案 1 :(得分:0)
一个人from here帮助我,并给了我很多代码。诀窍恰到好处。
$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 />';