PHP-如何根据26个字母分类列出用户名?
有个用户表,我要把所有用户名根据26个英文字母分类列出?如何sql语句并输出?如图。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有个用户表,我要把所有用户名根据26个英文字母分类列出?如何sql语句并输出?如图。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
我觉得可以在sql中使用case when语句来实现,只是有些死板。假设表中有个字段为name,sql如下:
select
case when head BETWEEN 'A' AND 'G' THEN 'AG'
when head BETWEEN 'H' AND 'N' THEN 'HN'
when head BETWEEN 'O' AND 'T' THEN 'OT'
END AS array,name
from (
select UPPER(substr(name,1,1)) as head,`name` from edu_user) temp
取出结果后,根据array的值来处理。楼主看一下怎么样,我不知道是否合适。
<?php
$names = array (
"bill gates",
"tanteng",
"wangjun",
"renhong",
"zhangyong",
"liyifei",
"wangwei",
"zhoutong",
"wangcheng",
"liuyingying",
"yuanbo",
"liudehua",
"liangchaowei",
"zhangxueyou",
"zhaowei",
"jiangjieshi",
"maozedong",
"liuyifei",
"Pony",
"Xieyangjun",
"Bianxiaojun"
);
$AG = array (
"A",
"B",
"C",
"D",
"E",
"F",
"G"
);
$HN = array (
"H",
"I",
"J",
"K",
"L",
"M",
"N"
);
$OT = array (
"O",
"P",
"Q",
"R",
"S",
"T"
);
$UZ = array (
"U",
"V",
"W",
"X",
"Y",
"Z"
);
$designer = '';
//自然排序算法对数组中名称排序(不区分大小写)
natcasesort($names);
foreach ( $names as $name ) {
$firstn = strtoupper ( substr ( $name, 0, 1 ) );
if (in_array ( $firstn, $AG )) {
$designer ['AG'] [] = $name;
} elseif (in_array ( $firstn, $HN )) {
$designer ['HN'] [] = $name;
} elseif (in_array ( $firstn, $OT )) {
$designer ['OT'] [] = $name;
} elseif (in_array ( $firstn, $UZ )) {
$designer ['UZ'] [] = $name;
}
}
//按照键名排序,正确排列
ksort($designer);
print_r ( $designer );
这样就ok了,第一个数组$names假设是从数据库取出来的。