相关疑难解决方法(0)

如何对UTF-8字符串数组进行排序?

我currentyl对如何在PHP中对包含UTF-8编码字符串的数组进行排序没有任何线索.该阵列来自LDAP服务器,因此通过数据库排序(没有问题)是没有解决方案.以下不适用于我的Windows开发机器(虽然我认为这至少应该是一个可能的解决方案):

$array=array('Birnen', 'Äpfel', 'Ungetüme', 'Apfel', 'Ungetiere', 'Österreich');
$oldLocal=setlocale(LC_COLLATE, "0");
var_dump(setlocale(LC_COLLATE, 'German_Germany.65001'));
usort($array, 'strcoll');
var_dump(setlocale(LC_COLLATE, $oldLocal));
var_dump($array);
Run Code Online (Sandbox Code Playgroud)

输出是:

string(20) "German_Germany.65001"
string(1) "C"
array(6) {
  [0]=>
  string(6) "Birnen"
  [1]=>
  string(9) "Ungetiere"
  [2]=>
  string(6) "Äpfel"
  [3]=>
  string(5) "Apfel"
  [4]=>
  string(9) "Ungetüme"
  [5]=>
  string(11) "Österreich"
}
Run Code Online (Sandbox Code Playgroud)

这完全是胡说八道.使用1252作为代码页setlocale()给出了另一个输出,但仍然是一个明显错误的输出:

string(19) "German_Germany.1252"
string(1) "C"
array(6) {
  [0]=>
  string(11) "Österreich"
  [1]=>
  string(6) "Äpfel"
  [2]=>
  string(5) "Apfel"
  [3]=>
  string(6) "Birnen"
  [4]=>
  string(9) "Ungetüme"
  [5]=>
  string(9) "Ungetiere"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用UTF-8字符串区域设置识别数组?

刚才注意到这似乎是PHP上的问题,因为de_DE.utf8用作locale 的相同代码段可以在Linux机器上运行.不过,这个特定于Windows的问题的解决方案会很好......

php arrays sorting utf-8

26
推荐指数
3
解决办法
3万
查看次数

用重音排序的php数组

我用这个按照姓氏排序:

  usort($fb_friends['data'], "custom_sort");          
  function custom_sort($a,$b) { 
    return $a['last_name']>$b['last_name'];
  }

  foreach($fb_friends['data'] as $friend) { 
    echo '<br>'; 
    echo $friend['name']; 
  } 
Run Code Online (Sandbox Code Playgroud)

但是 - 当姓氏是重音时,例如Šiko,Áron等,这些名字就在最后.我怎样才能正确排序?

php arrays sorting

7
推荐指数
2
解决办法
6749
查看次数

标签 统计

arrays ×2

php ×2

sorting ×2

utf-8 ×1