php strnatcasecmp()不稳定的行为

时间:2017-05-16 16:41:42

标签: php string-comparison

我正在尝试对具有不同长度的字母数字字符串的数组进行排序。我在这个比较中遇到了一些困难:

>>> strnatcasecmp("IG2349", "IG56LR1617617")
=> 1

如您所见,结果表明“IG2349”大于“IG56LR1617617”,因此“IG56LR1617617”在排序后出现在“IG2349”之前。

但是看看字符串,在第一个字符(等于)之后,第三个字符串在第一个字符串上比在第二个字符串上低,所以结果应该是< 1。

这是在php 5.6.20上测试的。

1 个答案:

答案 0 :(得分:0)

使用二进制安全比较strcasecmp代替自然:

strcasecmp("IG2349", "IG56LR1617617");