php数组中包含中文的排序方法

对于包含中文的PHP数组排序,有两种不同的方法可以实现,分别是使用array_multisort()函数和usort()函数。

对于包含中文的PHP数组排序,有两种不同的方法可以实现,分别是使用array_multisort()函数和usort()函数。

  1. 使用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
        )
)
  1. 使用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数组中包含中文的排序方法

基础教程推荐