我在php中有两个数组
$arrNum = array(1.7, 1.52, 0.01, 0.11);
$arrStr = array('1.7', '1.52', '0.01', '0.11');
Run Code Online (Sandbox Code Playgroud)
请注意,第二个数组与第一个数组相同,只是它的值为字符串.
排序或最大/最小操作是否可以为第二个数组返回不同的结果,因为它们是字符串?
我是否可以始终执行需要在字符串数组上进行值比较的操作,并获得与我在数组的数字版本上完成相同的结果?
文档很清楚,imo:
例如sort():
此函数对数组进行排序.此功能完成后,元素将从最低到最高排列.
它需要一个参数来定义值的处理方式:
排序类型标志:
- SORT_REGULAR - 正常比较项目(不要更改类型)< - 这是默认值
- SORT_NUMERIC - 以数字方式比较项目
- SORT_STRING - 将项目比较为字符串
- SORT_LOCALE_STRING - 根据当前区域设置将项目作为字符串进行比较.
但它也有一个警告:
警告
在对具有混合类型值的数组进行排序时要小心,因为sort()会产生不可预测的结果.
现在max():
注意:如果与整数进行比较, PHP会将非数字字符串计算为0,但如果将其视为数值最高的值,则仍会返回该字符串.如果多个参数计算为0,则max()将返回数字0(如果给定),否则将返回按字母顺序排列的最高字符串值.
和
给定一个字符串时,它将在比较时转换为整数.
更新:
回答你的问题:如果你想绝对确定排序是正确的,你知道字符串总是包含数字,你不信任字符串比较,然后指定以数字方式对它们进行排序:
sort($array, SORT_NUMERIC);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |