0

我在我的应用程序中使用 Devnagari 字体。键盘上的每个英文键都代表 Devnagari 中的某个字符。例如,我的英文名字是 Sabin,但当我使用 devnagari 字体时,它会是“;lag”,不带引号。并以这种方式将记录保存在数据库中。现在我在排序记录时遇到问题。

在 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
    )

)
4

2 回答 2

5

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

有几种编码可以让您将梵文保存为实际的梵文字符。它在 Unicode 中受支持。将文本保存为它们本来应该成为的实际梵文字符,不要超载现有的英文代码点并依赖于损坏的字体。然后,您将通过支持 Unicode 的任何东西获得排序功能和许多其他功能。


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

usort($array, function ($a, $b) {
    static $order = array('M', 'A', ';', 'L', ...);
    return array_search($a, $order) - array_search($b, $order);
});
于 2012-08-06T09:03:16.860 回答
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);
});
于 2012-08-09T03:44:35.293 回答