这是我的代码:
<div class="widgeter-content no-padding">
<ul id="contacts">
<?php
while ($r = mysql_fetch_array($q)){
$currentletter = substr($name,0,1);
if ($currentletter != $lastletter){
?>
<!-- start li data group for specific alphabetic letter -->
<li data-group="<?=$currentletter;?>">
<a class="title"><?=strtoupper($currentletter);?></a>
<?
}
?>
<ul>
<li>
<a href="#">
<span><?=$name;?></span>
</a>
</li>
</ul>
<?
if ($currentletter != $lastletter){
?>
</li>
<!-- end data group (not currently working, ends on first result) -->
<?
}
$lastletter = $currentletter;
}
?>
</ul>
</div>
我想做什么:
A:
Alfred
Annie
B:
Bob
Billy
如您所见,数据包含在li数据组中。
代码的第一部分工作正常,但是最后一部分(我试图在结束注释之前放置结束li标记,在每个循环的第一个结果之后显示,它需要在END处显示)每个字母的结果)。
最好的方法是什么?我确信它很明显我想要实现的目标,但我想不出一个合乎逻辑的方法来获得我想要的代码结构。
谢谢
答案 0 :(得分:1)
$res = array();
while ($r = mysql_fetch_array($q)){
$currentletter = substr($name,0,1);
$res[$currentletter][] = $name;
}
foreach($res as $key=>$val){
/// here you add your li
/// here $key will give you letter and $val will give you name
echo $key;
foreach($val as $reqvals){
echo $reqvals;
echo "<br>";
}
}
答案 1 :(得分:0)
最好的方法是什么?
如果要从数据库中获取行,为什么不能在那里使用GROUP BY并获取记录。这是做到这一点的首选方式。
假设列名为first_name
group by substr(first_name,1,1)