我试图将 isset() 和empty() 封装在一个函数中。
它在我的家庭开发服务器上运行良好(WinXP 下的 apache 2.4.3、PHP 5.2.17)。当我将其移植到运行 Fedora 的大学 Linux 机器时,我收到了有关未定义索引的通知。
我检查了我家用电脑上的 php.ini,错误报告设置为全部。我把 error_reporting(E_ALL);在我的 PHP 脚本中尝试重复该错误。这并没有发生。
问题 1:为什么我在家用开发计算机上没有收到通知?
这是我的功能:
<?php
function there($s) {
if (! isset($s)) {
return false;
}
if (empty($s)) {
return false;
}
return true;
}
?>
这里我测试 session 变量是否存在:
if (! there($_SESSION['u'])) {
$_SESSION['u'] = new User();
}
我切换了我的函数,以便在测试 isset() 之前测试empty(),认为这样可以避免收到通知。我还没有机会在学校测试这个。
问题 2:empty() 通常会避免在变量未定义或未设置时发出通知吗?
问题 3:我可以使用 There() 函数来执行此操作,还是仅通过传递未定义或未设置的参数即可收到通知?
最佳答案
isset
和 empty
不是函数,它们是语言构造。因此,他们可以逃避诸如读取文字变量名称之类的事情,而不是尝试访问值。您定义的任何函数都无法执行此操作。
考虑到这一点,就没有必要对两者进行测试。 empty
是 isset
的超集,因此您只需要检查 empty
。
关于php在函数中测试isset()和empty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230233/