如果变量传递给 empty() 或 isset(),PHP 不会对未定义的变量发出任何通知


<?php
function myFunction($yesNname) { } 
empty($noName);
print_r($noName);
isset($noName);
myFunction($noName);

输出:

PHP Notice:  Undefined variable: noName ... on line 6 // print_r
PHP Notice:  Undefined variable: noName ... on line 9 // myFunction

未定义的变量用于 empty()isset()。但是PHP没有发布通知。为什么 PHP 对某些函数显示歧视? 如何编写此类函数?

isset()empty() 都不是函数。正如手册所解释的那样:

这是一个语言结构,而不是一个函数

要获得这种行为,您需要调整用 C 编写的 PHP 源代码。

你也可以通过PHP扩展获得这种行为,但你还需要用C编写它并将其安装在你的服务器中。

更新:

  • isset() 的手册页
  • 空()的手册页
  • Zend引擎指南

你的意思是:

if(!empty($noName)) {
 // print_r
 // function($noName);
}

在函数端没有办法做到这一点。如果你只是不想显示错误,你可以在调用函数之前先检查变量,也可以使用错误控制运算符"@"。

最新更新