有没有使用SORT_LOCALE_STRING的例子,在使用array_unique时它会给默认的SORT_STRING提供不同的结果?
以下是一些代码,展示了如何在SORT_STRING,SORT_REGULAR,SORT_NUMERIC之间获得不同的结果。
<?php
$list = array(
'0',
null,
0,
10,
'10.0',
'1e1',
false,
''
);
var_dump(array_unique($list));
var_dump(array_unique($list, SORT_NUMERIC));
var_dump(array_unique($list, SORT_REGULAR));
输出:
array(5) {
[0]=>
string(1) "0"
[1]=>
NULL
[3]=>
int(10)
[4]=>
string(4) "10.0"
[5]=>
string(3) "1e1"
}
array(2) {
[0]=>
string(1) "0"
[3]=>
int(10)
}
array(4) {
[0]=>
string(1) "0"
[1]=>
NULL
[3]=>
int(10)
[7]=>
string(0) ""
}
请帮我找一个显示用于SORT_LOCALE_STRING的示例。
答案 0 :(得分:1)
我想在德语中,我认为ß
和ss
在词典上是相同的。基本上,他们应该被认为是相同的角色和排序。如果你不使用区域设置敏感的字符串比较(排序是字符串比较),那么,我认为很明显这两个字符串不会比较为相等。
$array = array('ß', 't', 'ss');
//binary safe transport of the above chars as present in my text editor
$array = unserialize(base64_decode('YTozOntpOjA7czoxOiLfIjtpOjE7czoxOiJ0IjtpOjI7czoyOiJzcyI7fQ=='));
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'deu_deu');
echo setlocale(LC_ALL, '0'), "\n";
var_dump(strcoll('ß', 'ss'));
var_dump(array_unique($array, SORT_LOCALE_STRING));
在我的机器上产生(win7,php5.4rc2)
German_Germany.1252
int(0)
array(2) {
[0]=>
string(1) "ß"
[1]=>
string(1) "t"
}
答案 1 :(得分:0)
排序语言环境基本上按当前设置的语言环境排序,例如:
$array = array('C', 'A', 'Ą');
setlocale(LC_ALL, 'lt_LT');
sort($array, SORT_LOCALE_STRING);
var_dump($array)
//will output $array = array('Ą', 'A', 'C'),
//without flag
//$array = array('A', 'C', 'Ą');