我假设由于某种原因正常排序不起作用(印地语字符在几种语言之间共享,对吗?)以下是如何根据用户定义的字符顺序进行排序
如果第一个字母匹配,您需要使用 usort() 并递归调用来比较下一个字母 - 像这样
$words = explode(' ', "एशिया खाना पकाना फोटोग्राफी भारतीय मसाला विध");
usort($words, 'hindiCmp');
function hindiCmp($a, $b) {
$hindi=array('क','ख','ग','घ','ङ','च','छ','ज','झ','ञ','ट','ठ','ड','ढ','ण','त','थ','द','ध','न','प','फ','ब','भ','म','य','र','ल','व','श','ष','स','ह','ळ','क','ष','ज्','ञ');
$a1 = array_search(substr($a, 0, 1), $hindi); // first letter of a
$b1 = array_search(substr($b, 0, 1), $hindi); // first letter of b
if ($a1 < $b1) {
return 1;
} elseif ($a1 > $b1) {
return -1;
} else {
if ((strlen($a) <= 1) && (strlen($b) <= 1)) { //end of both strings?
return 0; // then it's an exact match
} else { // otherwise compare the next characters
return hindiCmp(substr($a, 1), substr($b, 1));
}
}
}
编辑 - 对于好奇 - http://en.wikipedia.org/wiki/Nagari
“[Nagari 被] 几种印度语言使用,包括梵语、印地语、马拉地语、帕哈里语(Garhwali 和 Kumaoni)、尼泊尔语、比利语、孔卡尼语、博杰普里语、马加希语、库鲁克语、尼泊尔语 Bhasa 和信德语。有时用于书写或音译夏尔巴语和克什米尔语。以前用来写古吉拉特语。