php主文件没有看到包含文件变量
问题描述:
确定S.O.上的大多数答案。从我遇到的问题上反思。从包含的文件中看不到我的变量。我从来没有遇到过这个问题,而且这一切都搞乱了。我使用smarty,但由于它不能看到var,我回到旧时尚的PHP模板,仍然无法看到var ..这里是有问题的脚本(游戏网站ofc)。php主文件没有看到包含文件变量
包含的文件: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;
}
控制页面:
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
我多年来有许多变化这些模板和“包含”文件从未产生过这种错误。我知道包含的文件就好像包含的脚本插入了包含的位置一样。
为什么接收脚本无法看到包含脚本产生的变量。这些都包括在内,所以它不应该是一个问题
PS 我注意到这开始发生时,我从php v5升级到php v7,怀疑它有什么关系,我还没有检查过,因为包含文件是非常标准的。
答
您的问题未显示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');
omg - 我这样一个愚蠢的错误。这么小,我没有抓住它。谢谢@Matt S!程序上,我将它改为直接包含文件来测试,VS显示器和它的工作。我没有与聪明的检查,但我认为这是同样的问题。我没有将var传递给显示函数。 DER!我正在使用显示功能来验证页面是否存在,然后显示它。呃,恨用简单的probs LOL来解决人们的时间。在这一天半打了 - 只是看不到它。再次感谢。哦?我如何标记你为我解决了这个问题? –
@CharlieMacintyre没关系,发生在我们身上:)有一个复选标记,您可以点击答案旁边的标记以解决问题。 –