2017-10-12 86 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沒關係,發生在我們身上:)有一個複選標記,您可以點擊答案旁邊的標記以解決問題。 –