PHP变量没有传递给函数

时间:2011-10-18 17:15:18

标签: php function variables

我有以下设置:

class.staff.php

这定义了许多变量,我现在正在使用的是$ thisuser-> getStaffLang();

class.language.php

(只是一个函数,而不是一个类)这个文件根据我从header.inc.php传递的一个变量运行一个sql查询,并且它应该拉出工作人员唯一的语言ID。

功能是:

function translate($TRANSLATION){

$sql="SELECT $TRANSLATION FROM ".LANGUAGE_TABLE." WHERE LANGUAGE_ID=".$thisuser->getStaffLang;
 $query = mysql_query($sql);
 $translation = mysql_result($query,0);
 print $translation;
 }

的header.inc.php

我正在使用此功能的第一个文件

示例翻译条目是:

translate('TEXT_WELCOME_BACK_STAFF');

我的问题是,当我在函数$ thisuser-> getStaffLang之外时;已填充但在函数内部为空。我真的不想一遍又一遍地将相同的变量传递给函数,因为有些文件可能有超过20个翻译,这看起来像很多冗余编码。有人可以告诉我如何能够让函数识别该变量而不必在调用函数时每次都将它传递给它吗?希望这不清楚是泥。 :\

注意:class.language.php(函数不起作用)和header.inc.php(变量单独工作)都需要class.staff.php。所以他们都应该能够利用那个代码/变量。

3 个答案:

答案 0 :(得分:2)

global $thisuser;

的开头添加translate()

答案 1 :(得分:1)

您需要将$thisuser标记为全局。见下文:

function translate($TRANSLATION)
{
   global $thisuser;     //<----  MUST MARK global

   $sql="SELECT $TRANSLATION FROM ".LANGUAGE_TABLE." WHERE LANGUAGE_ID=".$thisuser->getStaffLang;
   $query = mysql_query($sql);
   $translation = mysql_result($query,0);
   print $translation;
 }

答案 2 :(得分:0)

$thisuser->getStaffLang可能不是全球性的。您应该通过将global $thisuser添加到函数的第一行

来使其全局化

或更好,也在函数范围内传递此变量。所以像这样:

function translate($TRANSLATION, $stafflang){
// function here
}

translate('TEXT_WELCOME_BACK_STAFF',$thisuser->getStaffLang);