php empty 函数判断结果为空但实际值却为非空的原因解析
最近我在一个项目中行使 empty 时获取到了一些料想之外的功效。下面是我处理赏罚后的调试记录,在这里与你分享了。 firstName,empty($person->firstName) );它的功效是:
功效出人意表。为什么变量的值为字符串,但同时会是空值呢?让我们在 $person->firstName 变量上实行行使其余一些函数来举办判定吧: firstName,empty($person->firstName),isset($person->firstName),is_null($person->firstName) );以上功效为:
译者注:这边的功效也许存在题目 isset 的功效同样为 false,可以到 这里 去运行下查察功效。 isset 和 is_null 函数执行功效切合预期判定,唯独 empty 函数返回了错误功效。 这里让我们来看看 person 类的实当代码吧: attributes = $attributes; } public function __get($name) { return $this->attributes[$name] ?? null; } }从上述代码我们可以看到 Person 工具的成员变量是通过 __get 把戏要领从 当将变量传入一个平凡函数时, 可是 empty 不是一个函数,而是一种数据布局。以是当将 在正中应用场景下,假如你但愿 empty 函数可以或许正常处理赏罚变量,我们必要在类中实现 __isset 把戏要领。 attributes = $attributes; } public function __get($name) { return $this->attributes[$name] ?? null; } public function __isset($name) { $attribute = $this->$name; return !empty($attribute); } }这是当 empty 举办节制判定时,会行使这个把戏要领来判定最终的功效。 再让我们看看输出功效: firstName,empty($person->firstName) );新的检测功效:
总结以上所述是小编给各人先容的php empty 函数判定功效为空但现实值却为非空的缘故起因理会,但愿对各人有所辅佐。措施员碰着题目城市上(编程之家52php.cn)查找题目解答要领!假如认为站点还不错,顺手转发给措施员伴侣一下! (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |