Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP变量未传递给函数_Php_Function_Variables - Fatal编程技术网

PHP变量未传递给函数

PHP变量未传递给函数,php,function,variables,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." WHER

我有以下设置:

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。因此,它们都应该能够利用该代码/变量。

添加
global$thisusertranslate()
$thisuser->getStaffLang
的开头,code>可能不是全局的。您可以通过在函数的第一行添加
global$thisuser
使其成为全局函数

或者更好,在函数范围中也传递这个变量。比如说:

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

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

您需要将
$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;
 }
函数翻译($TRANSLATION)
{
全局$thisuser;//getStaffLang;
$query=mysql\u查询($sql);
$translation=mysql\u结果($query,0);
打印$翻译;
}

叹气,太简单了!非常感谢。在过去的两个小时里,我一直把头撞在墙上Phehe,我自己也试过了,但我还没有这个代表:在他第一次回答的时候(虽然在几秒钟内)我就给了他积分,因为我不想使用你描述的“传递变量”方法,因为有很多条目我需要这样做,我不想有所有的准冗余代码。答案也很好,因为我知道(现在)你提到的两种方法都会奏效。非常感谢!您不应该依赖函数外部的变量。也许在将来的某个地方,你改变了变量名,或者让它起作用,然后它突然失效,然后会给你带来很多麻烦。Whithin函数/类总是在本地拥有一切顺便说一句,这不是第一位,而是最好的答案谢谢你的建议,我一定会记住的。关于这个特殊变量,尽管我知道它永远不会改变,$thisuser是整个结构中最重要的变量之一。不过我一定会记住你说的话。再次感谢。“顺便说一句,这不是第一位的问题,这是最好的答案”当然,但我特别提到我不想要你在我最初的问题中描述的方式。