首页 > 解决方案 > if Statement not finiding variable when inside function (Wordpress Plugin)

问题描述

The variable is not accessable inside the funtion. When I echo the variable outside the function I get the correct result. When I echo/use the variable inside the function I get a 'Notice: Undefined variable: crLocalIncompleteStatus in /setup.php on line 35'

Any ideas?

<?php
    global $wpdb;
    $table_name = $wpdb->prefix . 'crLocal';

    $crLocalIncompleteStatus = '';
    $crLocalCompleteStatus = '';

    $crLocal_DBChecked = $wpdb->get_var("SELECT COUNT(*) FROM $table_name");

    function crLocal_CheckDB() {
        global $crLocal_DBChecked,  $crLocalIncompleteStatus, $crLocalCompleteStatus;

        if ($crLocal_DBChecked == '0') { 
            $crLocalIncompleteStatus = 'block' ;
            $crLocalCompleteStatus = 'none' ;
        } elseif ($crLocal_DBChecked != '0') { 
            $crLocalIncompleteStatus = 'none' ;
            $crLocalCompleteStatus = 'block' ;
        } else {
            // Broken
            // More Code to follow
        }

        echo $crLocal_DBChecked;
    }

    crLocal_CheckDB();

    $crLocalInstallIncomplete = '<div id="crLocalInstallIncomplete" style="display: '.$crLocalIncompleteStatus.';">' ;

    $crLocalInstallComplete = '<div id="crLocalInstallComplete" style="display: '.$crLocalCompleteStatus.';">' ;

?>

So I need:

$crLocalIncompleteStatus to be 'block' when the count is 0 from the database and 'none' when its above 0.

$crLocalCompleteStatus to be 'none' when the count is 0 from the database and 'block' when its above 0.

标签: phpwordpressvariablesif-statement

解决方案


这是因为您的变量 $crLocalIncompleteStatus 超出了函数的范围,您可以通过将变量作为参数添加到函数来纠正此问题

function crLocal_CheckDB($crLocalIncompleteStatus) {
    global $crLocal_DBChecked,  $crLocalIncompleteStatus, $crLocalCompleteStatus;

    if ($crLocal_DBChecked == '0') { 
        $crLocalIncompleteStatus = 'block' ;
        $crLocalCompleteStatus = 'none' ;
    } elseif ($crLocal_DBChecked != '0') { 
        $crLocalIncompleteStatus = 'none' ;
        $crLocalCompleteStatus = 'block' ;
    } else {
        // Broken
        // More Code to follow
    }

    echo $crLocal_DBChecked;
}

crLocal_CheckDB($crLocalIncompleteStatus);

推荐阅读