php代码没有去错误函数,这个函数直接在handle_data();功能

时间:2013-08-22 05:30:46

标签: php

为什么php代码不会出现show error或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函数 有什么办法吗? 并告诉代码中的问题

2 个答案:

答案 0 :(得分:1)

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

你应该在你的功能中使它全局化 - 就像那样:

    function check_data(){
        global $error_array;

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

答案 1 :(得分: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>";
    }
  }