1

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

$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)在全局范围内设置了它。我是否需要将其余的“全局”代码放在某种构造函数中?还是我错过了一些非常小的东西。

谢谢

4

1 回答 1

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(); ?>
于 2013-01-16T03:53:15.607 回答