Php 如何将$\u会话变量传递到函数中

Php 如何将$\u会话变量传递到函数中,php,wordpress,function,variables,session-variables,Php,Wordpress,Function,Variables,Session Variables,我正在尝试将$\会话变量传递到WordPress的数据库查询函数中。如果我在函数中定义$\u会话变量,它就可以正常工作。但当我在全球层面上定义它们并试图传递它们时,它们不会传递。请查看下面的示例 这将传递到下面的函数 $_SESSION['pages'] = $_POST['pages']; 但当我加上 $pages = $_SESSION['pages']; $pages将不会传递到函数 $_SESSION['pages'] = $_POST['pages']; //passes

我正在尝试将$\会话变量传递到WordPress的数据库查询函数中。如果我在函数中定义$\u会话变量,它就可以正常工作。但当我在全球层面上定义它们并试图传递它们时,它们不会传递。请查看下面的示例

这将传递到下面的函数

$_SESSION['pages'] = $_POST['pages'];
但当我加上

$pages = $_SESSION['pages'];
$pages将不会传递到函数

    $_SESSION['pages'] = $_POST['pages']; //passes
    $pages = $_SESSION['pages']; //does not pass

function insertLocalBusinessSchema()
    {
        //include global config  
        include_once($_SERVER['DOCUMENT_ROOT'].'/stage/wp-config.php' );

        global $wpdb;

        // if I try to define this outside of the function it doesn't pass through.
        $pages = implode(',', $_SESSION['pages']);

        $paymentAccepted = implode(',', $_SESSION['paymentAccepted']);

        $table_name = $wpdb->prefix . "schemaLocalBusiness";

        $insert = "UPDATE ".$table_name." SET addressLocality = '".$_SESSION['addressLocality']."', addressRegion = '".$_SESSION['addressRegion']."', postalCode = '".$_SESSION['postalCode']."', streetAddress = '".$_SESSION['streetAddress']."', pages = '".$pages."', paymentAccepted = '".$paymentAccepted."' WHERE id = 1";

        $wpdb->query($insert);

    }
提前感谢您的帮助

$\u SESSION是一个全局变量,因此您可以在任何地方调用它,而$pages不是全局定义的,因此您需要将其作为参数传递给函数,如下所示:

function insertLocalBusinessSchema($pages)
{
    echo $pages; // the variable is now in the function's scope
}
// super global variable GLOBALS
$GLOBALS['pages'] = $_POST['pages'];

function insertLocalBusinessSchema()
{
    echo $GLOBALS['pages']; // this also works
}
$pages = $_POST['pages'];

function insertLocalBusinessSchema()
{
    global $pages;  // $pages becomes global
    echo $pages;    // this also works
}
然后调用传递$pages参数的函数:

如果希望在函数中使用变量$pages而不将其值作为参数传递,可以使用$GLOBALS PHP super-global变量,如下所示:

function insertLocalBusinessSchema($pages)
{
    echo $pages; // the variable is now in the function's scope
}
// super global variable GLOBALS
$GLOBALS['pages'] = $_POST['pages'];

function insertLocalBusinessSchema()
{
    echo $GLOBALS['pages']; // this also works
}
$pages = $_POST['pages'];

function insertLocalBusinessSchema()
{
    global $pages;  // $pages becomes global
    echo $pages;    // this also works
}
更多

或者,您可以像这样使用全局关键字:

function insertLocalBusinessSchema($pages)
{
    echo $pages; // the variable is now in the function's scope
}
// super global variable GLOBALS
$GLOBALS['pages'] = $_POST['pages'];

function insertLocalBusinessSchema()
{
    echo $GLOBALS['pages']; // this also works
}
$pages = $_POST['pages'];

function insertLocalBusinessSchema()
{
    global $pages;  // $pages becomes global
    echo $pages;    // this also works
}

出于某种原因,我在让他们通过时遇到了问题。所以现在我只是将会话添加到本地函数,并将其设置为变量。谢谢你的帮助@Ivan86