PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【php】sort函数整理大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

sort函数整理

1 主题:数字型排序(sort_numeriC)

案例1.1
$arr = [3, 100, 1, 20, 4, 0];
sort($arr, SORT_NUMERIC);
out($arr);

输出:0, 1, 3, 4, 20, 100

案例1.2
$arr = [2, 2.4, 1.2, 100, 10, 1.5, 1];
sort($arr, SORT_NUMERIC);
out($arr);

输出:1, 1.2, 1.5, 2, 2.4, 10, 100

2 主题 字符串型排序(sort_String)

案例2.1
$arr = [1, 10, 2];
sort($arr, SORT_StriNG);
out($arr);

输出:1,10,2

3 主题:自然排序(SORT_NATURAL)
对比3.1
$arr = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in'];
sort($arr, SORT_StriNG);
out($arr);

输出结果:
1 ft 5 in,10 ft 2 in,2 ft 11 in,2 ft 7 in,7 ft 6 in,

对比3.2
$arr = ['2 ft 7 in', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 ft 6 in'];
sort($arr, SORT_NATURAL);
out($arr);

输出结果:
1 ft 5 in,2 ft 7 in,2 ft 11 in,7 ft 6 in,10 ft 2 in

备注:
// 关于自然序 这个链接很好 https://pypi.org/project/natsort/


4,主题:大小写不敏感(SORT_FLAG_CASE)

// can be combined (bitwise OR) with SORT_StriNG or SORT_NATURAL to sort Strings case-insensitively

案例4.1
$arr = ['orange', 'Orange', 'apple', 'Apple'];
sort($arr, SORT_StriNG);
out($arr);

输出
Apple,Orange,apple,orange,

案例4.2
$arr = ['orange', 'Orange', 'apple', 'Apple'];
sort($arr, SORT_FLAG_CASE | SORT_StriNG);
out($arr);

输出
apple,Apple,orange,Orange,

解释:
一个案例;单纯的String排序,是按照ascii排序的
因为大写字母比小写字母的ascii排序靠前,排序也更靠前
所以,输出的结果是:Apple,Orange,apple,orange

第二个案例:按照String不敏感方式排序,先将大写字母转换成小写字母,再按ascii码排序
第一步转换:大写字母->小写, Apple->apple
第二步排序:apple, apple, orange, orange
第三步映射回原始数据: apple, Apple, orange, Orange

这里还有个问题,apple和Apple的排序是否稳定?

案例4.3
$arr = ['Orange', 'orange', 'apple', 'Apple'];
sort($arr, SORT_FLAG_CASE | SORT_StriNG);
out($arr);
这里看到和案例4.2对比,结果是不稳定的, orange, Orange的顺序是不定的,
它只能保证, 都是小写字母的情况下,不同的字符串的排序, 但是对于不同的大小写字符串转换为相同的小写字符串时,排序不保证的

这就提醒我们,在用SORT_FLAG_CASE | SORT_StriNG排序时,一定不要对此种情况有预期

 

案例4.4
$arr = ['2 ft 7 In', '1 ft 5 in', '10 ft 2 in', '2 Ft 11 in', '7 Ft 6 in'];
sort($arr, SORT_NATURAL);
out($arr);
结果:1 ft 5 in,2 Ft 11 in,2 ft 7 In,7 Ft 6 in,10 ft 2 in


案例4.5
$arr = ['2 Ft 7 In', '1 ft 5 in', '10 ft 2 in', '2 ft 11 in', '7 Ft 6 in'];
sort($arr, SORT_NATURAL | SORT_FLAG_CASE);
out($arr);
结果:
1 ft 5 in,2 Ft 7 In,2 ft 11 in,7 Ft 6 in,10 ft 2 in,

可以看到
4.4 案例中的2 Ft 11 in, 2 ft 7 In,这个不符合自然排序
而4.5 用sort_flag_case来消除了大小写敏感的限制, 修正成为大小写不敏感的自然排序,排序结果更符合人类理解

总结:
现在再来看这个注释,就容易理解了
can be combined (bitwise OR) with SORT_StriNG or SORT_NATURAL to sort Strings case-insensitively
必须要和其他排序方式一起使用,意味着,只有两种用法
SORT_FLAG_CASE | SORT_StriNG
SORT_FLAG_CASE | SORT_NATURAL


整体的介绍页面https://www.PHP.net/manual/en/function.sort.PHP

特别的,
If two members compare as equal, their relative order in the sorted array is undefined.

如果两个成员的比较是相同的,他们的相对位置是不确定的

大佬总结

以上是大佬教程为你收集整理的【php】sort函数整理全部内容,希望文章能够帮你解决【php】sort函数整理所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: