我有一个多维数组,我按字母顺序排序,但问题是,丹麦特殊字符æøå。它们应按该顺序排序,但不按该顺序返回。
这是我的阵列(部分被删除)
ObjectMapper mapper = new ObjectMapper();
// For text string
JsonNode = mapper.readValue(mapper.writeValueAsString("Text-string"), JsonNode.class)
// For Array String
JsonNode = mapper.readValue("[\"Text-Array\"]"), JsonNode.class)
// For Json String
String json = "{\"id\" : \"1\"}";
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getFactory();
JsonParser jsonParser = factory.createParser(json);
JsonNode node = mapper.readTree(jsonParser);
我正在使用此功能对其进行排序
Array
(
[0] => Array
(
[Name] => John
)
[1] => Array
(
[Name] => Pater
)
[2] => Array
(
[Name] => Allan
)
[3] => Array
(
[Name] => Ø test
)
[4] => Array
(
[Name] => Å test
)
[5] => Array
(
[Name] => Æ test
)
)
任何人都知道,如何排序,所以我按正确的顺序得到了æøå?
我见过一些使用例如
uasort($sorted_region, function($a, $b) {
$retval = $a['Name'] <=> $b['Name'];
return $retval;
});
但我不确定如何在多维数组中实现它。
感谢您的帮助! : - )
答案 0 :(得分:2)
实际上这似乎有用
setlocale(LC_ALL, 'da_DK.utf8');
usort($sorted_region, function($a, $b) {
return strcoll($a['Name'], $b['Name']);
});
答案 1 :(得分:1)
使用此解决方案,由@Sbls在该页面的评论中链接。它需要为你的charset进行修改,但它应该可以工作。
function compareASCII($a, $b) {
$at = iconv('UTF-8', 'ASCII//TRANSLIT', $a);
$bt = iconv('UTF-8', 'ASCII//TRANSLIT', $b);
return strcmp($at, $bt);
}
uasort($lang, 'compareASCII');