PHP中判断一个参数存不存在的问题
Created at 2019-07-08 Updated at 2020-07-29 Category 问题 views
最近做的需求要求开发一个接口,参数是可选的。比如说有个设备号 equipment_id,这个参数是可选的,可以不传,也可以传入但是内容为空,并且如果穿了参数就要验签。
isset() 和 empty()
- isset() 函数用来检查一个变量是否存在并且不是 null。
- empty() 函数检查一个变量是否为空。
无论使用 isset() 还是 empty() 都无法区别,传入"equipment_id":"",与不传 equipment_id。
所以去查了下 PHP 手册,发现了这个函数,array_key_exists(),作用是检查数组里是否有指定的键名或索引,这个函数正好可以解决这个问题,如果是传了参数 array_key_exists('equipment_id', $allParam) 返回 true,如果是没有传参,则返回 false。
最用后了一个这样的函数来判断,感觉挺奇葩的,这大概就是弱类型语言的一个缺陷吧。。
最后巩固一下 PHP 中空的其中情况。
PHP 空的七种情况
- “” (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- “0” (作为字符串的0)
- NULL
- FALSE
- array() (一个空数组)
- $var (一个声明了,但是没有值的变量)