为什么" 104"在" 0000105"之前排序?

时间:2017-08-30 06:02:35

标签: php sorting

我想在php中对数组进行排序。但是,结果与我不同。

# initiate virtual display with 'visible=0' activated
# this way you will hide the browser
display = Display(visible=0, size=(800, 600))
# Start Display
display.start()

...
# Do your fetching/scrapping
...

# Stop Display
display.stop()

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

然而,它的排序方式如

0000000105, 104, A,B,C

为什么104首先显示而不是第二?如何解决?

在Swift中,我写了如下的内容,它排序为例外结果

104,0000000105, A,B,C

2 个答案:

答案 0 :(得分:3)

如果要将元素严格地排序为字符串,则需要告诉PHP这样做,即

sort($k, SORT_STRING);

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

答案 1 :(得分:-1)

使用natsort($k);

结果将是

array(5) { [0]=> string(10) "0000000105" [1]=> string(3) "104" [2]=> string(1) "A" [4]=> string(1) "B" [3]=> string(1) "C" }