0

我试图从我在该函数中调用的另一个函数中获取我在函数中定义的变量,例如:

$thevar = 'undefined';
Blablahblah();
echo $thevar; (should echo blaaah)
function Blahedit(){

     echo $thevar; (should echo blah)
     $thevar = 'blaaah';

}
function Blablahblah(){

     global $thevar;
     $thevar = 'blah';
     Blahedit();

}

我想知道是否有另一种方法可以在不将参数传递给 Blahedit() 的情况下执行此操作,get_defined_vars 在函数中为我提供 vars 而不是 $thevar... 并且调用 global $thevar 只会给我以前未编辑的版本。

请帮忙 ):

4

3 回答 3

0

你可以使用这个: http: //php.net/manual/en/reserved.variables.globals.php

或者最好看看 oop

http://php.net/manual/en/language.oop5.php http://php.net/manual/en/language.oop5.basic.php

于 2012-12-29T14:31:23.657 回答
0

您可以将变量作为参考参数传递(如下所示),将您的代码封装在一个类中并将您的变量用作类属性或让函数返回更改后的变量。

$thevar = 'undefined';
Blablahblah($thevar);
echo $thevar; 

function Blahedit(&$thevar){
     echo $thevar;
     $thevar = 'blaaah';
}

function Blablahblah(&$thevar){
     $thevar = 'blah';
     Blahedit($thevar);
}

在函数内部使用全局变量被认为是一种不好的做法。但是,通过引用传递大量变量也不是好的风格。

如果你想让你的代码按原样工作,你必须在global $thevar你的编辑函数中添加一个:

function Blahedit(){
     global $thevar;
     echo $thevar; (should echo blah)
     $thevar = 'blaaah';
}
于 2012-12-29T14:33:16.477 回答
0

只是 blahedit 中的全局 $thevar。

function Blahedit(){
    global $thevar;
    echo $thevar; //(should echo blah)
    $thevar = 'blaaah';

}
于 2012-12-29T14:36:45.550 回答