2015-10-31 65 views
0

我在訪問包含文件中的數組時遇到問題。代碼僅在直接包含en.php時才起作用。 Mayby我無法訪問數組詞,因爲en.php是「sub-included」?PHP - 無法訪問包含文件中的變量

的index.php

<?php 
include 'localization/langSwitcher.php'; 
echo $words['title']; 

langSwitcher.php

<?php 

function SetLanguage() 
{ 
    if(isset($_COOKIE['lang'])) 
    { 
     switch ($_COOKIE['lang']) { 
      case 'en': 
       include 'localization/en.php'; 
       break; 

      default: 
       include 'localization/en.php'; 
       setcookie('lang', 'en', time() + 365 * 24 * 3600, '/'); 
       break; 
     } 
    } 
    else 
     setcookie('lang', 'en', time() + 365 * 24 * 3600, '/'); 
} 

SetLanguage(); 

en.php

<?php 
$words = array(
    'title' => 'Welcome on Trex where you can buy or sell via Internet!', 
    '' => '' 
); 
+1

這將是一個範圍問題。你在一個函數裏面設置'$ words',並且它不能從該函數之外訪問 - 你必須使用全局函數,或者從你的函數中返回'$ words'而不是 – andrewsi

回答

2

作爲包含在函數中的文件 - 此函數中的所有變量在函數外部都不可用。

所以,你應該用global關鍵字,例如:

$words = array(); 
function SetLanguage() 
{ 
    global $words; // here 

    if(isset($_COOKIE['lang'])) 
    { 
     switch ($_COOKIE['lang']) { 
      case 'en': 
       include 'localization/en.php'; 
       break; 

      default: 
       include 'localization/en.php'; 
       setcookie('lang', 'en', time() + 365 * 24 * 3600, '/'); 
       break; 
     } 
    } 
    else 
     setcookie('lang', 'en', time() + 365 * 24 * 3600, '/'); 
} 

SetLanguage(); 

或者你的函數可以返回$words它的結果的執行。

+0

。事實上,你擊敗了我通過46秒:) – DeDee