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 に答える