PHP-无法访问包含文件中的variable


PHP - cannot access to varible in included file

我在访问包含文件中的数组时遇到问题。只有当我直接包含en.php时,代码才有效。也许我无法访问数组单词,因为en.php是"sub-included"?

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!', 
    '' => ''
);

作为包含在函数中的文件,此函数中的所有变量在函数外都不可用。

因此,您应该使用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作为其执行的结果。