全局范围中的变量无法在函数中访问

时间:2013-01-16 03:48:43

标签: php

这可能是一个愚蠢的问题,但我有一些代码:

$userData = array_map('htmlentities', mysql_fetch_assoc(mysql_query(
    "SELECT * FROM `smf_members` 
    WHERE `id_member` = (SELECT `id_member` FROM `smf_log_online` WHERE `session` = '" . mysql_real_escape_string($session) . "')"
    )));

function printHeader() 
{
    $header = <<<eof
<!DOCTYPE html>
<html lang="en">
<head>
        ...
            <li><a href="#"><img src="images/avatar.gif" alt="" /> {$userData['member_name']}</a>
        ...
eof;
    echo $header;
}

这是一个名为config.php的文件,在我的索引页面中是require,如下所示:

<?php require 'config.php';printHeader(); ?>

但是,printHeader()函数$userData内部没有设置,就像设置全局范围中的print_r($userData)一样。我是否需要将其余的“全局”代码放在各种构造函数中?或者我错过了一些非常小的东西。

由于

1 个答案:

答案 0 :(得分:2)

使用global关键字。

$userData = array_map('htmlentities', mysql_fetch_assoc(mysql_query(
    "SELECT * FROM `smf_members` 
    WHERE `id_member` = (SELECT `id_member` FROM `smf_log_online` WHERE `session` = '" . mysql_real_escape_string($session) . "')"
    )));

function printHeader() 
{
            global $userData;

    $header = <<<eof
<!DOCTYPE html>
<html lang="en">
<head>
        ...
            <li><a href="#"><img src="images/avatar.gif" alt="" /> {$userData['member_name']}</a>
        ...
eof;
    echo $header;
}

<?php require 'config.php';printHeader(); ?>