PHP中判断一个参数存不存在的问题

Created at 2019-07-08 Updated at 2020-07-29 Category 问题 Tag PHP

最近做的需求要求开发一个接口,参数是可选的。比如说有个设备号 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 (一个声明了,但是没有值的变量)
Site by Cellophane using Hexo & Random

Hide