php在函数中测试isset()和empty()

标签 php isset

我试图将 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() 函数来执行此操作,还是仅通过传递未定义或未设置的参数即可收到通知?

最佳答案

issetempty 不是函数,它们是语言构造。因此,他们可以逃避诸如读取文字变量名称之类的事情,而不是尝试访问值。您定义的任何函数都无法执行此操作。

考虑到这一点,就没有必要对两者进行测试。 emptyisset 的超集,因此您只需要检查 empty

关于php在函数中测试isset()和empty(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15230233/

相关文章:

php - 无法看到 mysql 数据库时 Composer 安装失败

php - 通过 URL 为 Angular View 发送 ID

php - 获取变量错误

c# - 世界货币查找表 - 带有 ISO 3166-1 alpha-2 代码?

php - 需要计算某个 id、codeigniter 返回了多少条记录

PHP Memcached 问题

PHP isset ('submit' ) 总是返回 FALSE

javascript - 如何将变量从一个页面传递到另一页面?

php isset() 在一个字符串变量上使用一个字符串作为索引

php - 为什么我无法在 PHP 中获取 require_once 函数的返回值?