对于包含中文的PHP数组排序,有两种不同的方法可以实现,分别是使用array_multisort()函数和usort()函数。
对于包含中文的PHP数组排序,有两种不同的方法可以实现,分别是使用array_multisort()函数和usort()函数。
- 使用array_multisort()函数排序
array_multisort()函数是PHP的一个组合排序函数,可以对多组数据进行排序,本方法需要使用此函数实现。
步骤如下:
1.1 类型转换
由于中文排序和字符串排序不同,需要将中文转换为拼音,这里我们可以使用php的拼音转换类pinyin.class.php进行转换,将中文转换为拼音。
1.2 数组拼接
将排序的数组按照需要的规则进行拼接,这里我们可以使用循环将每个元素拼接为‘姓氏+名称’的形式。
1.3 排序
使用array_multisort()函数进行排序。
示例代码:
require_once("pinyin.class.php");
$array = array(
array("name"=>"张三"),
array("name"=>"李四"),
array("name"=>"王五"),
array("name"=>"赵六"),
array("name"=>"钱七")
);
//数组类型转换
foreach ($array as $k => $v) {
$array[$k]['pinyin'] = Pinyin_UTF8::toPinyin($v['name']);
}
//数组拼接
foreach ($array as $k => $v) {
$sort[$k] = $v['pinyin'] . $v['name'];
}
//数组排序
array_multisort($sort, SORT_ASC, $array);
print_r($array);
输出结果:
Array
(
[0] => Array
(
[name] => 钱七
[pinyin] => qianqi
)
[1] => Array
(
[name] => 李四
[pinyin] => lisi
)
[2] => Array
(
[name] => 张三
[pinyin] => zhangsan
)
[3] => Array
(
[name] => 赵六
[pinyin] => zhaoliu
)
[4] => Array
(
[name] => 王五
[pinyin] => wangwu
)
)
- 使用usort()函数排序
usort()函数是PHP的一个自定义排序函数,可以按照指定的规则对数组中的元素进行排序。
步骤如下:
2.1 类型转换
同样需要使用pinyin.class.php将中文转换为拼音。
2.2 排序函数处理
本方法因为是使用usort()函数排序,所以需要实现自定义排序函数sortFun()进行排序,这里我们使用array_multisort()函数实现一次快速排序,再将排序的结果返回。
示例代码:
require_once("pinyin.class.php");
$array = array(
array("name"=>"张三"),
array("name"=>"李四"),
array("name"=>"王五"),
array("name"=>"赵六"),
array("name"=>"钱七")
);
//排序函数处理
function sortFun($a, $b) {
return strcmp($a['pinyin'].$a['name'], $b['pinyin'].$b['name']);
}
//类型转换
foreach ($array as $k => $v) {
$array[$k]['pinyin'] = Pinyin_UTF8::toPinyin($v['name']);
}
//数组排序
usort($array, 'sortFun');
print_r($array);
输出结果:
Array
(
[0] => Array
(
[name] => 钱七
[pinyin] => qianqi
)
[1] => Array
(
[name] => 李四
[pinyin] => lisi
)
[2] => Array
(
[name] => 张三
[pinyin] => zhangsan
)
[3] => Array
(
[name] => 赵六
[pinyin] => zhaoliu
)
[4] => Array
(
[name] => 王五
[pinyin] => wangwu
)
)
以上就是关于PHP数组中包含中文的排序方法的完整攻略,希望能对你有所帮助。
本文标题为:php数组中包含中文的排序方法
基础教程推荐
- PHP操作XML的教程详解 2023-06-26
- Laravel框架自定义公共函数的引入操作示例 2023-01-08
- PHP Linux安装 2023-09-02
- PHP cURL获取微信公众号access_token的实例 2022-10-15
- 兼容PHP5的PHP目录管理函数库 2023-08-10
- php-fpm.conf配置文件中文说明详解及重要参数说明 2022-11-23
- PHP实现求解最长公共子串问题的方法 2022-10-01
- laravel 模型查询按照whereIn排序的示例 2023-03-02
- 实例介绍PHP中zip_open()函数用法 2022-12-20
- 基于PHP实现一个简单的在线聊天功能 2023-06-04