PHP:使用存储数组的函数

PHP:使用存储数组的函数,php,arrays,Php,Arrays,我有一个 function displayErr(){ $err[] = "You have an error"; } 稍后在我的代码中 if($bla==false) { displayErr(); } if(!empty($err)) { echo print_r($err); } 我什么也没得到,难道我不能调用一个添加了$err的函数,然后稍后再检查它吗?$err仅在您的displayErr函数中可用 您需要添加一个global语句。如下所示:displayErr(){glob

我有一个

function displayErr(){
    $err[] = "You have an error";
}
稍后在我的代码中

if($bla==false) { displayErr(); }
if(!empty($err)) { echo print_r($err); }

我什么也没得到,难道我不能调用一个添加了
$err
的函数,然后稍后再检查它吗?

$err
仅在您的
displayErr
函数中可用

您需要添加一个
global
语句。如下所示:
displayErr(){global$err;…}


这称为变量作用域,您可以阅读更多信息。

$err
仅在
displayErr
函数中可用

您需要添加一个
global
语句。如下所示:
displayErr(){global$err;…}


这称为变量作用域,您可以阅读更多信息。

您可以使用
global
关键字将变量存储为全局变量:

function displayErr()
{ 
global $err;
$err = "You have an error"; 
}

[...]

global $err;
if($bla==false) { displayErr(); } if(!empty($err)) { echo print_r($err); }

您可以使用
global
关键字将变量存储为全局变量:

function displayErr()
{ 
global $err;
$err = "You have an error"; 
}

[...]

global $err;
if($bla==false) { displayErr(); } if(!empty($err)) { echo print_r($err); }

$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\u r()
    本身输出内容,您不需要
    echo print\u r()
    仅在
    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\u r()
    本身输出内容,您不需要
    回显print\u r()
    变量
    $err
    仅在函数
    displayErr()中可见。您需要的是访问函数中的全局变量。为此,需要使用
    global
    关键字导入它,如下例所示:

    function displayErr(){
        global $err;
        $err[] = "You have an error";
    }
    

    有关变量范围的更多信息,请参阅此链接:

    变量
    $err
    仅在函数
    displayErr()
    中可见。您需要的是访问函数中的全局变量。为此,需要使用
    global
    关键字导入它,如下例所示:

    function displayErr(){
        global $err;
        $err[] = "You have an error";
    }
    

    有关变量作用域的更多信息,请参阅此链接:

    一个简单的错误处理类示例:

    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();
    

    一个简单的错误处理类示例:

    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();
    

    我建议重构成一个错误日志类。我建议重命名你的函数<代码>显示错误
    根本不显示错误。我建议重构到错误日志类中。我建议重命名您的函数
    displayErr
    根本不显示错误。谢谢,这与我是否应该检查函数中的$\u会话是一样的吗?@Karem:不,
    $\u会话
    是一个,这意味着你不需要执行
    全局$\u会话
    。谢谢,如果我应该检查函数中的$\u会话,这是否相同?@Karem:不,
    $\u会话
    是一个会话,这意味着您不需要执行
    全局$\u会话