2017-10-12 64 views
0

确定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,怀疑它有什么关系,我还没有检查过,因为包含文件是非常标准的。

回答

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'); 
+0

omg - 我这样一个愚蠢的错误。这么小,我没有抓住它。谢谢@Matt S!程序上,我将它改为直接包含文件来测试,VS显示器和它的工作。我没有与聪明的检查,但我认为这是同样的问题。我没有将var传递给显示函数。 DER!我正在使用显示功能来验证页面是否存在,然后显示它。呃,恨用简单的probs LOL来解决人们的时间。在这一天半打了 - 只是看不到它。再次感谢。哦?我如何标记你为我解决了这个问题? –

+0

@CharlieMacintyre没关系,发生在我们身上:)有一个复选标记,您可以点击答案旁边的标记以解决问题。 –