//引入处理 alpha_sort.php 类
require_once("funfile/BasicSettingsQgz/alpha_sort.php");
//创建对象
$alpha_sort = new alpha_sort();
//调用 alpha_sort.php 类 的groupByInitials()方法
$$alphabetArr = array(
array('id'=>1,'name'=>'和稀泥','departName'=>'未分配'),
array('id'=>2,'name'=>'晶晶','departName'=>'未分配'),
array('id'=>3,'name'=>'才艺','departName'=>'未分配'),
array('id'=>4,'name'=>'向前看','departName'=>'未分配'),
);
$teacherData = $alpha_sort->groupByInitials($alphabetArr,'name');
//以下是封装好的 首字母排序的类与方法
<?php
class alpha_sort{
/**
* 二维数组根据首字母分组排序
* @param array $data 二维数组
* @param string $targetKey 首字母的键名
* @return array 根据首字母关联的二维数组
*/
public function groupByInitials(array $data, $targetKey = 'name'){
$data = array_map(function ($item) use ($targetKey) {
return array_merge($item, [
'initials' => $this->getInitials($item[$targetKey]),
]);
}, $data);
$data = $this->sortInitials($data);
return $data;
}
//按字母排序
public function sortInitials(array $data){
$sortData = [];
foreach ($data as $key => $value) {
$sortData[$value['initials']][] = $value;
}
ksort($sortData);
return $sortData;
}
//获取汉字的首字母
public function getInitials($str)
{
if(empty($str)){
return '';
}
//取出参数字符串中的首个字符
$temp_str = substr($str,0,1);
if(ord($temp_str) > 127){
$str = substr($str,0,3);
}else{
$str = $temp_str;
$fchar = ord($str{
0});
if ($fchar >= ord('A') && $fchar <= ord('z')){
return strtoupper($temp_str);
}else{
return null;
}
}
$s1 = iconv('UTF-8', 'gb2312//IGNORE', $str);
if(empty($s1)){
return null;
}
$s2
php实现姓名根据首字母排序的类与方法
最新推荐文章于 2023-03-05 00:46:03 发布