为什么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函数 有什么办法吗? 并告诉代码中的问题
答案 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>";
}
}