php - 为什么空('0')=真;空('00')=假;
问题描述
我评估$var
使用
if(empty($_GET['var'])){
...
}
我从
https://myweb.com/?var=0
我从
https://myweb.com/?var=00
解决方案
empty
伪函数与转换为布尔值共享其逻辑-如果某些内容等同于“假”,则认为它是“空的”。
被认为是“空”的值列表旨在提供帮助,但有时会令人困惑,因为实际上并没有一个完美的答案。从整数开始,“空”似乎是合理0
的,但例如1
不是。因为用户输入几乎总是以字符串的形式出现(特别是在 Web 上,PHP 最熟悉的地方),字符串"0"
的行为与 integer 相同也很有用0
。
从表面上看,"00"
也应该等价于0
,因此是“空”,但现在事情开始变得混乱:如果将字符串转换"hello"
为整数,也就是, 0
那么"hello"
也是空的吗?那不会很有用。
事实是,像这样的演员只能真正发挥以下两种方式之一:
- 对任何不是 100% 明确的转换都抛出错误。
- 选择一组最有用但不完全一致的折衷方案。
empty("0")
PHP 选择了第二条路线,两者之间的差异empty("00")
是所选择的特定折衷方案的副作用之一。采取类似路线的其他语言(例如 Perl、JavaScript)有不同的折衷方案,具有不同的令人惊讶的结果。
另请参阅我对类似问题的回答。
推荐阅读
- spring-boot - 配置服务器中的 Swagger 2 @ApiIgnore 属性切换
- excel - VBA - 复制列中的所有数据
- python - 计算数组中的条目与数组中数字之和的比率
- css - Ionic 4中不同页面的不同最大宽度
- class - Python 类。为什么我的程序在用户输入时不打印/返回文本消息?
- c++ - 我的代码不会使用 ifstream 和 ofstream 从文件中读取和显示数据
- javascript - Django 和 JQuery - 查找和替换文本
- numpy - pip install numpy 退出构建但出现错误但仍会安装
- html - 为什么我的代码没有显示我选择的字体和位置?我刷新并显示一秒钟
- javascript - 为 JSON 元素生成 id