确定大多数关于S.O.的答案从我遇到的问题来看是后退的。从包含的文件中看不到我的变量。我从来没有遇到过这种情况,而且它搞砸了一切。我使用的很聪明,但由于它无法看到var,我回到旧时尚的php模板,仍然看不到var ..这里是有问题的脚本(游戏网站ofc)。
包含文件:prep_feature_game.php
foreach($games->gamexml->game as $game){
$d = parseDate($game['releasedate']);
$game['date_month'] = $d['month'];
$game['date_day'] = $d['day'];
$game['date_year'] = $d['year'];
$game['image_60x40'] = showImage($game['foldername'],'60x40');
$game['genrelist'] = displayGenreList($game['gameid']);
//debugPrint($game);die();
$game_list[] = $game;
}
CONTROL PAGE:
switch ($page) {
default:
include('includes/prep_feature_game.php');
// NOTE $GAME_LIST HAS THE ARRAY ^
display('feature_game');
break;
和显示文件:FEATURE_GAME.PHP
<h1><?=SITE_NAME;?>'s Featured Games!</h1>
<table>
<?PHP
// TEST FOR $GAME_LIST
foreach($game_list as $field=>$data){
echo $data['gamename'];
}
/*
this produces the error:
Notice: Undefined variable: game_list in C:\xampp\htdocs\ix2\themes\missingpiece\feature_game.php on line 7
*/
}// end switch page
这些模板多年来我有很多变化,包括&#34;&#34;文件从未产生过这种错误。我知道包含的文件就好像所包含的脚本插入了include所在的位置。
为什么接收脚本无法看到从包含的脚本生成的变量。这些都包括在内,所以它不应该是一个问题
PS 我注意到当我从php v5升级时开始发生这种情况 - php v7,怀疑它与此有什么关系,我还没检查过,因为包含文件非常标准。
答案 0 :(得分:0)
您的问题没有显示display
函数的定义,但除非您将$game_list
声明为该函数中的全局函数,否则它超出了范围。如果您包含该模板,那么它将起作用。
include('includes/prep_feature_game.php');
include('feature_game.php');
或者为display
功能添加参数。
display('feature_game', $game_list);
或者,如果您使用smarty,则必须先分配变量。
$smarty->assign('game_list', $game_list);
$smarty->display('feature_game.tpl');