strcoll() 的行為有時有點令人困惑。它取決於您地區設定中的 LC_COLLATE。
<?php
$a = 'a';
$b = 'A';
print strcmp($a, $b) . "\n"; setlocale(LC_COLLATE, 'C');
print "C: " . strcoll($a, $b) . "\n"; setlocale(LC_COLLATE, 'de_DE');
print "de_DE: " . strcoll($a, $b) . "\n"; setlocale(LC_COLLATE, 'de_CH');
print "de_CH: " . strcoll($a, $b) . "\n"; setlocale(LC_COLLATE, 'en_US');
print "en_US: " . strcoll($a, $b) . "\n"; ?>
例如,如果您想使用 strcoll 對陣列進行排序,這會很有用。
<?php
$a = array('a', 'A', '?'span>, '?'span>, 'b', 'B');
setlocale(LC_COLLATE, 'C');
usort($a, 'strcoll');
print_r($a);
?>
這就像 sort($a)
陣列
(
[0] => A
[1] => B
[2] => a
[3] => b
[4] => ?
[5] => ?
)
<?php
setlocale(LC_COLLATE, 'de_DE');
usort($a, 'strcoll');
print_r($a)
?>
這完全不同
陣列
(
[0] => a
[1] => A
[2] => ?
[3] => ?
[4] => b
[5] => B
)