调用一个未定义的函数,为什么?

use*_*502 3 php

我在PHP中有这个脚本:

if($_SERVER['REQUEST_METHOD'] == 'POST'){

if(isset($_POST['data_id']) && $_POST['data_id'] != NULL){

  $data = $_POST['data_id'];
  DoConfig($data);

  function DoConfig($param_data){
    echo $param_data;
  }    
}

}else{
echo '0';
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到错误Call to an undefined function,我该如何解决?

Nie*_*jes 8

PHP按顺序执行 - 使用之前声明该函数,你会没事的.

详细说明 - 在PHP中加载整个文件,并根据范围进行解析.如果函数位于全局范围的末尾,则这将起作用,因为此时在输入条件的子范围之前评估了全局范围.由于您正在使用if相同的评估顺序进入子范围,因此需要在用于当前范围之前评估该函数.

  • 我可能错了,但你的答案可能是正确的一半.如果函数在if之外和之后声明,它将起作用...文件最初被解析,如果函数在外面,如果它可以在任何时候可用. (3认同)