php - 为什么 "104"排在 "0000105"之前?

标签 php sorting

我想在 php 中对数组进行排序。但是,结果和我排除的不一样。

$k = ["0000000105","104","A","C","B"];
sort($k);
var_dump($k);

我想得到 0000000105, 104, A,B,C

然而,它排序像

104,0000000105, A,B,C

为什么 104 显示在第一位而不是第二位?如何解决?

在 Swift 中,我像下面这样写,它像异常(exception)结果一样排序

var str = ["0000000105","104","A","C","B"]

let k = str.sorted()

print(k) //0000000105, 104, A,B,C

最佳答案

如果要严格按照字符串对元素进行排序,需要告诉PHP这样做,即

sort($k, SORT_STRING);

PHP 是一种松散类型的语言,所以当它遇到 0000000105104 时,它会在使用 SORT_REGULAR 时对它们进行数值比较。

关于php - 为什么 "104"排在 "0000105"之前?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45952996/

相关文章:

bash - unix 排序,带主键和辅助键

c - 快速排序算法给出段错误

mysql - 按开始和/或结束日期对 MySQL 中的事件进行排序

javascript - 如何在php函数中以数组形式返回

php - php 如何从字符串中取出某个特定的单词?

php - AJAX "load more"按钮 : disappears once clicked 问题

php - 生成xml时如何处理PHP中的大撇号和大引号?

python - 在奇数和偶数隔离列表中对奇数和偶数进行排序/分组

Mysql在具有数字和字符组合的char数据类型中排序

php - 我的脚本中是否存在内存泄漏,或者是另一个罪魁祸首?