首页 > 解决方案 > 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:如果其他人为这个问题想出了一个更好的标题,请随时编辑它:)

标签: php

解决方案


,开头的 比较,你会发现 的 ascii 值为,44(十进制),而 for 的 ascii 值为048。

因此,使用逗号,字符串小于,因为 ascii 值小于,没有逗号开头c的 ascii 值为 99,大于0.

从https://www.asciitable.xyz/使用的 ASCII 表


推荐阅读