排序使用非英文字体的记录的可能方法?

时间:2012-08-06 08:49:19

标签: php sorting

我在我的应用程序中使用Devnagari字体。键盘中的每个英文键代表Devnagari中的某些字符。例如我的英文名字是萨宾,但是当我使用devnagari字体时,它会是“滞后”而没有引号。并且记录以这种方式保存在数据库中。现在我在排序记录方面遇到了问题。

在devnagari首先出现的是Devnagari元音,然后是devnagari字母。喜欢 c,cf,O,O {,p,pm,...... [每个用逗号分隔] 然后devnagari字母表从第一个开始,相当于 s,v,u,#,...等等[每个用逗号分隔]。

我遇到的问题是在devnagari中按字母顺序排序名称。任何想法都将受到高度赞赏。谢谢!

编辑:返回的数组如下,我需要使用usort函数。

Array
(
    [0] => stdClass Object
    (
        [user_id] => NLK32437
        [first_name] => ;lag
        [last_name] => %]qL
        [email_address] => test1@msn.com
        [mobile_number] => 9834874582
        [description] => g]kfn
        [date_joined] => 08-AUG-12
        [status] => 1
        [username] => user1
        [userpassword] => 691f9298642af07c2d6ea8fef56074201e077b34
    )

[1] => stdClass Object
    (
        [user_id] => NLK32435
        [first_name] => clgn
        [last_name] => zdf{
        [email_address] => test2@msn.com
        [mobile_number] => 984134354
        [description] => g]kfn
        [date_joined] => 08-AUG-12
        [status] => 1
        [username] => user2
        [userpassword] => 0e025eade868b4b481f41ff7449bc1967261e170
    )

)

2 个答案:

答案 0 :(得分:5)

您正在滥用文字编码。您将文本保存为用于其他事物的代码点,并且仅使用将原始英文字母呈现为其他内容的字体。这完全是错误的做法。

有几种编码可以让你拯救梵文作为实际的梵文字符。这是supported in Unicode。将文本保存为实际的梵文字符,不要超载现有的英文代码点并依赖于破碎的字体。然后,您将通过支持Unicode的任何内容获得排序功能和许多其他内容。


尽管如此,还是一个简单的usort示例:

usort($array, function ($a, $b) {
    static $order = array('M', 'A', ';', 'L', ...);
    return array_search($a, $order) - array_search($b, $order);
});

答案 1 :(得分:0)

嗯,我试了一下后才开始工作了。谢谢@deceze和@dualed。 这就是我做的事情

usort($array, function ($a, $b) {
    static $order = array('c', ';', 'g', 'L');
    return array_search($a->first_name, $order) - array_search($b->first_name, $order);
});