php - PHP比较与以逗号开头的字符串与零作为字符串进行比较时不同
问题描述
在 PHP 7.3 中执行以下指令将返回 false。
',commaSeparatedString' >= '0' // => Result is false (evaluate strings)
如果您与整数 0 进行比较,或者不将逗号放在开头,您会得到预期的结果。
',commaSeparatedString' >= 0 // => Result is true (cast to integer)
'commaSeparatedString' >= '0' // => Result is true (evaluate strings)
有人可以解释一下 PHP 在幕后做什么来获得这个结果吗?我期待一个不同的结果。谢谢!
PD:如果其他人为这个问题想出了一个更好的标题,请随时编辑它:)
解决方案
与,
开头的 比较,你会发现 的 ascii 值为,
44(十进制),而 for 的 ascii 值为0
48。
因此,使用逗号,字符串小于,因为 ascii 值小于,没有逗号开头c
的 ascii 值为 99,大于0
.
从https://www.asciitable.xyz/使用的 ASCII 表
推荐阅读
- node.js - 从单独的脚本返回数组
- c++ - std::bind 不接受绑定占位符的 std::cref - 为什么?
- python - 在 Python 中,当你看到一个变量的输出而不打印它时,它叫什么?
- javascript - Tablesorter 如何更新表头值
- python - 向用户询问优先级列表,然后根据该列表对列表进行排序
- neural-network - 调用 fit() 函数时的索引问题
- python - 如何在具有许多列的熊猫数据框中生成所有可能的列组合?
- reactjs - react-apollo GraphQL 查询 - this.client.watchQuery 不是函数
- bixby - 如何启用 Bixby Studio 以在电视、手表和电器(冰箱)上进行开发
- reactjs - 有没有办法使用 GreenSock (GSAP) 在 React 中为 SVG 组件设置动画?