变量无法通过php函数更新

时间:2019-02-10 07:15:51

标签: php variables scope

我已经按照wc3教程中有关回显php变量的指示来表示错误的输入字段。我不明白为什么这行不通。

我有一些奇怪的范围问题:

tools.php:

if(!isset($_POST)){
    $name_error = "";
}
if(isset($_POST) && !empty($_POST)){
    $_SESSION['current'] = $_POST;
    validateForm();
}

index.php:

<span class="error"><?php echo $name_error; ?></span>

tools.php:

function validateForm() {
    $cust = $_SESSION['current']['cust'];
    $usermovie = $_SESSION['current']['movie'];
    $userseats = $_SESSION['current']['seats'];
    if(!preg_match('/[a-zA-Z ]+/', $cust['name']) || empty($cust['name'])){
        $name_error = "a-z only.";
        echo $name_error;
    } else{
        $_SESSION['bookings'][] = $_SESSION['current'];
        echo 'pass';
        $name_error = "";
    }

}

我知道它正在击中函数并更新$ name_error的值,因为它从函数中回显了正确的值。同样,如果我手动将$ name_error的值设置为字符串,则它会正确显示在错误范围内。但是,当我只提交表单/正常运行函数时,跨度中的$ name_error的值不会更新。

2 个答案:

答案 0 :(得分:0)

您没有返回任何值。像这样返回buildscript { ext.kotlin_version = '1.3.21' repositories { google() jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:3.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.google.gms:google-services:4.2.0' } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 值:

$name_error

答案 1 :(得分:0)

解决了这个问题,需要声明

global $name_error;

在函数开始时-谁能给我一种返回错误范围内单个函数结果的方法吗?我显然不能只在那里打电话给他们。