我在我的应用程序中使用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
)
)
答案 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);
});