尝试使用函数包含一个数组来要求带有数组的文件

时间:2015-06-20 16:11:36

标签: php arrays function

我想在index.php文件中要求文件,并在这些文件中使用数组。 从哪里获取文件的树结构是:

  

根/郎/ NL /仪表板/如default.php

     

根/郎/ NL /仪表板/ users.php

这些文件的代码是

  

如default.php       

// Default DASHBOARD language list


    if (empty($lang) || !is_array($lang)){
        $lang = [];
    }
 $lang = array_merge($lang, [

 'DASH_LANG_DE'             => 'Duits',
 'DASH_LANG_FR'             => 'Frans',
 'DASH_LANG_GB'             => 'Engels',
 'DASH_LANG_NL'             => 'Nederlands',

 'DASH_SET_LANG'            => 'Stel hier uw taal in'


 ]);
  

users.php       

// Default USERS language list


        if (empty($lang) || !is_array($lang)){
            $lang = [];
        }


 $lang = array_merge($lang, [

     'USERS_DEFAULT'            => 'Gebruikers',
     'USERS_CREATE_NEW'         => 'Maak een nieuwe gebruiker aan',
     'USERS_DELETE'             => 'Delete de gebruiker',

     'USERS_NAME'               => 'Naam'


 ]);
  

index.php放在根目录中,代码如下           

    define ('LANG','lang/');

    function lang_files($language,$path,$file){

      foreach ($file as $value) {
                if(file_exists(''.LANG.$language.'/'. $path .'/'. $value .'.php')){
                    require_once ''.LANG.$language.'/'. $path .'/'. $value .'.php' ;
                }
                else{
                    echo ''.LANG.$language.'/'. $path .'/'. $value .'.php <b>does not exist!!</b>' ;echo "<br>";
                }
        }  
    }

    $language = "nl";

    $path = 'dashboard';

    $file =['default',
                'users'
                ];

    lang_files($language,$path,$file);

    echo $lang['DASH_SET_LANG'];

当我开始工作时,我会将该函数作为一个方法放在我的类文件中,但首先它必须工作。

此时我无法使用

访问数组
  

echo $ lang ['DASH_SET_LANG'];

当我直接需要文件时,我没有任何问题。

当我在函数中回显require_once部分时,我可以看到我文件的路径是正确的。

有人知道我哪里出错吗?

更新

在我从@vvondra那里得到的帮助下,我能够找出出错的地方。

下面您将看到更改的功能。小改变。

function lang_files($language,$path,$file){
        $lang = [];
          foreach ($file as $value) {
                if(file_exists(''.LANG.$language.'/'. $path .'/'. $value .'.php')){
                    require_once ''.LANG.$language.'/'. $path .'/'. $value .'.php' ;
                }
                else{
                    echo ''.LANG.$language.'/'. $path .'/'. $value .'.php <b>does not exist!!</b>' ;echo "<br>";
                }
            }
        return $lang;
    }

感谢@vvondra让我朝着正确的方向前进。

2 个答案:

答案 0 :(得分:0)

php中的函数创建范围。这意味着在函数内部定义的任何变量在它的正文

之外都是不可见的
function foo()
{
    $bar = 1;
}

// Here $bar is undefined
foo();
// Still undefined

在您的情况下,您初始化$lang函数中的lang_files变量,因此它在外部不可见。您必须将其作为函数的返回值返回,并将其分配给另一个变量。

答案 1 :(得分:0)

StackOverflow的这个问题/答案可能会帮助您更轻松,更易于管理。

How to load return array from a PHP file?

基本上,您只需要在文件中返回数组,然后在索引中包含要加载的文件,将include分配给变量。

它就像一个魅力:)