我正在建立一个非英语网站,但有些数据可能包含英文。当我对列表进行排序时,例如:
sort($tags, SORT_LOCALE_STRING);
英语字符串总是排在第一位(因为拉丁字母在Unicode中的序数最低),即使我的网站主要是非英语人士。
我想有一个sort函数,以与标准PHP排序相同的方式按字典顺序对字符串进行排序,但总是在所有非英语字符串之后放置英文字符串。有什么想法吗?
答案 0 :(得分:0)
好的,这是作弊,但最终我这样做了:
$tags = getSomeTags();
$tags_eng = $tags_lang = [];
foreach ($tags as $tag => $value) {
if ($tag[0] <= 'z') $tags_eng[$tag] = $value;
else $tags_lang[$tag] = $value;
}
ksort($tags_eng); ksort($tags_lang);
$tags = $tags_lang + $tags_eng;
阵列&#34;联盟&#34;操作维护元素的顺序,因此效果很好。
请注意,重要的不使用array_merge()
在最后连接数组,因为如果您的字符串键看起来像一个数字(比较"9"
9
),然后array_merge()
会认为它是一个&#34;索引项目&#34;并会用它做奇怪的事情(将密钥重置为最早的可用索引)。
如果有人能想出更好的方法,我会喜欢它。