PHP-如何根据26个字母分类列出用户名?

发布于 2017-02-18 23:36:34 字数 163 浏览 1144 评论 2

有个用户表,我要把所有用户名根据26个英文字母分类列出?如何sql语句并输出?如图。
请输入图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-08-17 15:02:45

我觉得可以在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的值来处理。楼主看一下怎么样,我不知道是否合适。

偏爱自由 2017-04-22 15:35:11

<?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假设是从数据库取出来的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文