Php 致命错误:调用未定义的函数availableDate()

Php 致命错误:调用未定义的函数availableDate(),php,sql,Php,Sql,当我试图运行这个程序时,出现了这个错误,这意味着什么 if(isset($_POST['submit'])) { $date = $_POST['date']; $partySize = $_POST['partysize']; $catering = $_POST['catering']; print_r($date); print_r($partySize); print_r($cate

当我试图运行这个程序时,出现了这个错误,这意味着什么

if(isset($_POST['submit']))
    {
        $date = $_POST['date'];
        $partySize = $_POST['partysize'];
        $catering = $_POST['catering'];

        print_r($date);
        print_r($partySize);
        print_r($catering);

        include "/diska/www/include/coa123-13-connect.php";
        $host='co-project.lboro.ac.uk';
        $dbName='coa123wdb';

        $dsn = "mysql://$username1:$password1@$host/$dbName"; //Data Source Name

        require_once('MDB2.php'); //Just include this line into your program - you do not have to have the source in your directory
        $db =& MDB2::connect($dsn); //Try to make a connection

        if (PEAR::isError($db)) {
            die($db->getMessage());
        }

        //step 1 - query
        $sql = "SELECT * FROM venue
        WHERE capacity >= $partySize";

        //step 2 - executing the query
        $result =& $db->query($sql);
        if (PEAR::isError($sql)) {
            die($result->getMessage());
        }

        $valueIDArray = array();

        while($row = $result -> fetchrow()){
            $valueIDArray[] = $row[0];
        }


        $values = implode(',', $valueIDArray);
        $query = "SELECT * FROM venue_booking
        WHERE venue_id IN ($values)";

        //step 2 - executing the query
        $result1 =& $db->query($query);
        if (PEAR::isError($query)) {
            die($result1->getMessage());
        }

        while($row = $result1 -> fetchrow()){
            $idValue[] = $row[0];
            $dateValues[] = $row[1];
        }

        availableDate($dateValues,$date,$idValue, $db); //Line error points to

        function availableDate($bookedDates, $date, $idValue, $db){

我已经在错误指向的行中指出,该文件在其自己的PHP文件中工作,但在if(isset($\u POST['submit'])语句中不工作。我做错了什么?

如果必须在
if
语句中定义它,请在定义后调用
availableDate

编辑:

条件语句内部定义的非工作函数示例

if(1){

    func('a');

    function func($a){
        echo $a;
    }
}
这不起作用,但这将:

if(1){

    function func($a){
        echo $a;
    }

    func('a');            
} 

将函数定义移到
if
语句之外。这样做几乎没有什么好的理由——唯一的借口可能是,如果你想根据条件对函数进行不同的定义,但这似乎不是你要做的。如果在
If
中定义函数,则必须在调用它之前定义它;顶层定义的函数可以从任何地方调用。

这不重要。它是PHP@asprin你自己试试吧,这很重要这是新的。让我试试。@asprin它对有条件声明的函数(即,在
if
中)很重要。我在这里很困惑。条件声明函数?这是小提琴,帮你解释一下
if(1){

    function func($a){
        echo $a;
    }

    func('a');            
}