我有一个
function displayErr(){
$err[] = "You have an error";
}
稍后在我的代码中
if($bla==false) { displayErr(); }
if(!empty($err)) { echo print_r($err); }
我没有得到任何东西,我不能调用添加$err
然后再检查的函数吗?
答案 0 :(得分:2)
变量$err
仅在函数displayErr()
中可见。你想要的是访问函数内的全局变量。为此,您需要使用global
关键字导入它,如下例所示:
function displayErr(){
global $err;
$err[] = "You have an error";
}
有关变量范围的更多信息,请参阅以下链接:http://php.net/manual/en/language.variables.scope.php
答案 1 :(得分:1)
$err
仅在displayErr()
函数的范围内可见。你需要传递它或它的值。有两种选择:
返回错误消息并附加到调用范围内的$err
function displayErr() {
return "You have an error";
}
$err = array();
if($bla==false) { $err[] = displayErr(); }
if(!empty($err)) { print_r($err); }
使用global
function displayErr() {
global $err;
$err[] = "You have an error";
}
$err = array();
if($bla==false) { displayErr(); }
if(!empty($err)) { print_r($err); }
此外,print_r()
单独输出内容,您不需要echo print_r()
。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以使用global
关键字将变量存储为全局:
function displayErr()
{
global $err;
$err = "You have an error";
}
[...]
global $err;
if($bla==false) { displayErr(); } if(!empty($err)) { echo print_r($err); }
答案 4 :(得分:0)
一个简单的错误处理类示例:
class ErrorHandler()
{
private $errors = array();
public function add_error($error = 'You have an error')
{
$this->errors[] = $error;
}
public function get_errors()
{
return $this->errors;
}
public function print_errors()
{
print_r($this->errors);
}
}
$errorhandler = new ErrorHandler;
if($bla==false) $errorhandler->add_error('Variable bla is not set!');
if($bla=='unknown error') $errorhandler->add_error();
$errors = $errorhandler->get_errors();
if($errors) print_r($errors); // or
if($errors) $errorhandler->print_errors();