我正在尝试将 isset() 和 empty() 封装在一个函数中。
它在我的家庭开发服务器(Apache 2.4.3,WinXP 下的 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;
}
?>
这里我测试一个会话变量是否存在:
if (! there($_SESSION['u'])) {
$_SESSION['u'] = new User();
}
我切换了我的函数,以便在测试 isset() 之前测试 empty() 认为这将避免收到通知。我还没有机会在学校测试这个。
问题 2:如果变量未定义或未设置,empty() 通常会避免发出通知吗?
问题 3:我可以使用 there() 函数来执行此操作,还是仅通过传递 undefined 或 unset 参数就能得到通知?