PHP中的empty()与isset()用法及数据比较解析
95 浏览量
更新于2024-08-30
收藏 72KB PDF 举报
在PHP编程语言中,比较运算和逻辑运算对于程序的控制流和数据验证至关重要。下面将对这些知识点进行详细的解析。
1. **empty() 函数**
`empty()` 用于检查变量是否为空或“假”。根据描述,以下情况会被 `empty()` 判定为 true:
- 未赋值的变量
- 未声明的变量
- 值为 0
- 字符串 "0"
- 空字符串 ""
- 布尔值 false
- null
- 空数组 `array()`
- 对象的魔术方法 `__get()` 返回的值
在PHP 5.0以下的版本,没有属性的对象也会被视为 true。`empty()` 只能用于变量、变量的索引值或属性值,不接受常量或表达式,但从PHP 5.5开始,可以处理表达式。
2. **isset() 函数**
`isset()` 用来检测变量是否已设置并非 NULL。以下值会被 `isset()` 判定为 false:
- 未赋值的变量
- 未声明的变量
- null
- 对象的魔术方法 `__get()` 返回的值
和 `empty()` 一样,`isset()` 也不接受常量或表达式作为参数。
3. **不同类型的数据比较**
当两个不同类型的值进行比较时,PHP会尝试进行类型转换:
- 如果其中一个是布尔值或 null,它们会被转换为布尔值进行比较。
- 如果其中一个是数字,那么所有值都会被转换为数字进行比较。
- 如果其中一个是字符串,所有值会转为字符串进行比较。
特别注意,对象总是大于数组和标量类型,数组则总是大于标量类型。此外,0 开头的数字字符串在比较时不按八进制处理,而是直接转换为十进制数字。
4. **类型转换规则**
- 当一个值被 `empty()` 判断为 true 时,转换为布尔值得到 false,反之为 true(`__get()` 返回的值需要根据具体值判断)。
- `empty()` 判断为 true 的值转换为数字得到 0,非空数组转换为数字得到 1(`__get()` 返回的值也需要根据具体值判断)。
5. **示例代码解析**
代码段展示了类 `Test` 中的私有属性 `$k` 和 `__get()` 魔术方法的使用。当尝试访问私有属性 `$k` 时,`__get()` 返回 123,这导致 `empty()` 判断返回 true,进一步的 `json_encode()` 将这个布尔值编码为 JSON 字符串。
总结起来,理解PHP中的比较运算和逻辑运算对于编写正确且可靠的代码至关重要。正确处理变量的状态、进行有效的类型转换以及理解比较规则,可以避免许多潜在的错误和意外行为。在实际开发中,应当谨慎使用 `empty()` 和 `isset()`,确保它们被正确地应用于变量和表达式,同时注意不同类型的比较行为,以确保代码的预期行为。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-10-26 上传
2020-10-29 上传
weixin_38672807
- 粉丝: 9
- 资源: 923
最新资源
- junebash.com:Jon Bash网站的代码,jonbash.com; 使用Jekyll,Bootstrap等制成
- PrefSafety:在设置中禁用“全部重置”和“全部删除”
- OFDM-ook.zip_matlab例程_matlab_
- goodshop单商户高级商城系统后台
- Pangaea Phone Beta-crx插件
- LCADTestRepo
- dpark:Spark的Python克隆,Python中的MapReduce相似框架
- 02whole[1].rar_软件设计/软件工程_PDF_
- try-vitejs
- Field Calculator for ServiceNow-crx插件
- test_ci
- chasr-server:端到端加密GPS跟踪服务
- uploaded:uploded.py
- 430control.rar_DSP编程_Asm_
- PathCover下拉的视觉的视图效果
- 2020_TopologyGAN:拓扑