这可能是一个愚蠢的问题,但我有一些代码:
$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)
一样。我是否需要将其余的“全局”代码放在各种构造函数中?或者我错过了一些非常小的东西。
由于
答案 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(); ?>