php 中文首字母排序
时间: 2023-09-03 22:15:21 浏览: 64
PHP 中文首字母排序可以通过使用 PHP 的内置函数 usort() 和 mb_substr() 实现。首先,使用 mb_substr() 函数获取每个中文字符串的首字母。然后,使用 usort() 函数按照首字母进行排序。
以下是一个示例代码:
```
// 中文字符串数组
$arr = array("张三", "李四", "王五", "赵六", "钱七");
// 根据中文首字母排序函数
function cmp($a, $b) {
$a = mb_substr($a, 0, 1, 'utf-8');
$b = mb_substr($b, 0, 1, 'utf-8');
return strcmp($a, $b);
}
// 排序
usort($arr, "cmp");
// 打印排序结果
print_r($arr);
```
输出结果为:
```
Array
(
[0] => 李四
[1] => 钱七
[2] => 张三
[3] => 王五
[4] => 赵六
)
```
相关问题
thinkphp 中文首字母排序
在ThinkPHP中,可以通过给字段加前缀的方式,快速实现中文首字母排序。具体方法是使用TP框架自带的助手函数get_pinyin来获取每个记录的拼音首字母,再根据首字母进行排序。示例代码如下:
```php
// 获取数据
$list = Db::name('user')->field('id, name')->select();
// 获取每条记录的拼音首字母
foreach ($list as &$item) {
$item['initial'] = get_pinyin($item['name'],true);
}
// 根据首字母进行排序
usort($list, function($a, $b){
return strcmp($a['initial'], $b['initial']);
});
// 输出排序结果
foreach ($list as $item) {
echo $item['name'] . "\n";
}
```
php取汉字首字母 生字
PHP可以使用以下代码来取得汉字的首字母:
```php
function getFirstLetter($str){
$result = '';
for ($i=0; $i < mb_strlen($str, 'utf8'); $i++) {
$result .= getFirstChar(mb_substr($str, $i, 1, 'utf8'));
}
return $result;
}
function getFirstChar($str){
$fchar = ord(substr($str, 0, 1));
if ($fchar >= ord("A") and $fchar <= ord("Z") ) return $str;
$asc = ord($str[0])*256 + ord($str[1])-65536;
if ($asc >= -20319 and $asc <= -20284) return "A";
if ($asc >= -20283 and $asc <= -19776) return "B";
if ($asc >= -19775 and $asc <= -19219) return "C";
if ($asc >= -19218 and $asc <= -18711) return "D";
if ($asc >= -18710 and $asc <= -18527) return "E";
if ($asc >= -18526 and $asc <= -18240) return "F";
if ($asc >= -18239 and $asc <= -17923) return "G";
if ($asc >= -17922 and $asc <= -17418) return "H";
if ($asc >= -17417 and $asc <= -16475) return "J";
if ($asc >= -16474 and $asc <= -16213) return "K";
if ($asc >= -16212 and $asc <= -15641) return "L";
if ($asc >= -15640 and $asc <= -15166) return "M";
if ($asc >= -15165 and $asc <= -14923) return "N";
if ($asc >= -14922 and $asc <= -14915) return "O";
if ($asc >= -14914 and $asc <= -14631) return "P";
if ($asc >= -14630 and $asc <= -14150) return "Q";
if ($asc >= -14149 and $asc <= -14091) return "R";
if ($asc >= -14090 and $asc <= -13319) return "S";
if ($asc >= -13318 and $asc <= -12839) return "T";
if ($asc >= -12838 and $asc <= -12557) return "W";
if ($asc >= -12556 and $asc <= -11848) return "X";
if ($asc >= -11847 and $asc <= -11056) return "Y";
if ($asc >= -11055 and $asc <= -10247) return "Z";
return $str;
}
$hanzi = '你好';
echo getFirstLetter($hanzi); // 输出:NH
```
以上代码是通过调用`getFirstLetter`函数来遍历输入的汉字字符串,然后调用`getFirstChar`函数来获取每个汉字的首字母。通过这样的方式,可以将汉字转换为拼音首字母。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)