-1

为什么 php 代码不进入显示错误或 check_data 函数

<?php
$error_array = array();
if (isset($_REQUEST["welcome_already_seen"])) {
    check_data();
    if (count($error_array) != 0) {
        show_error();
        show_welcome();
    } else {
        handle_data();
    }
} else {
    show_welcome();
}

function show_welcome()
{
    echo "<form method='post'>
        <input type='text' name='flavor'>
        <input type='submit' value='submit'>
        <input type='hidden' name='welcome_already_seen' value='already_seen'>
        </form>";
}

function check_data()
{
    if ($_REQUEST["flavor"] == "") {
        $error_array[] = "<div style='color:red'>please enter flavor</div>";
    }
}

function show_error()
{
    global $error_array;
    foreach ($error_array as $err) {
        echo $err, "<br>";
    }
}

function handle_data()
{
    echo "flavor =";
    echo $_REQUEST["flavor"];
}

?>

为什么 php 代码没有进入 show error 或 check_data 函数是否有任何解决方案并告诉代码中的问题

4

2 回答 2

1

它确实check_data起作用,但您$error_array在本地范围内使用,因此未填充全局数组。

你应该在你的函数中让它成为全局的——就像这样:

    function check_data(){
        global $error_array;

        if($_REQUEST["flavor"] == ""){
            $error_array[] = "<div style='color:red'>please enter flavor</div>";
        }
    }
于 2013-08-22T05:34:04.730 回答
1

你错过global $error_array了你的功能check_data。它将check_data()设置一个局部变量,因此全局$error_array始终为空。

 function check_data(){     
    global $error_array;
    if($_REQUEST["flavor"] == ""){          
        $error_array[] = "<div style='color:red'>please enter flavor</div>";
    }
  }
于 2013-08-22T05:36:31.027 回答