从外部函数(PHP)访问函数中的局部变量

时间:2012-03-10 12:42:57

标签: php

有没有办法在PHP中实现以下功能,还是根本不允许? (见下面的注释行)

function outside() {
    $variable = 'some value';
    inside();
}

function inside() {
    // is it possible to access $variable here without passing it as an argument?
}

5 个答案:

答案 0 :(得分:3)

请注意,不建议使用global关键字,因为您无法控制(您永远不知道应用程序中的其他位置是否使用和更改了变量)。但如果你正在使用课程,它会让事情变得更容易!

class myClass {
    var $myVar = 'some value';

    function inside() {
        $this->myVar = 'anothervalue';
        $this->outside(); // echoes 'anothervalue'
    }

    function outside() {
        echo $this->myVar; // anothervalue
    }
}

答案 1 :(得分:1)

不,您不能从另一个函数访问函数的局部变量,而不将其作为参数传递。

您可以使用global变量,但变量不会保持为本地变量。

答案 2 :(得分:1)

不可能。如果$variable是全局变量,您可以通过global关键字访问它。但这是一个功能。所以你无法访问它。

可以通过$GLOBALS数组设置全局变量来实现。但同样,你正在利用全球背景。

function outside() {
    $GLOBALS['variable'] = 'some value';
    inside();
}

function inside() {
        global $variable;
        echo $variable;
}

答案 3 :(得分:1)

这是不可能的。您可以使用global来完成此操作。如果你只是不想定义参数但可以在你可以使用的函数中给出它:

function outside() {
    $variable = 'some value';
    inside(1,2,3);
}

function inside() {
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

请参阅php手册funct_get_args()

答案 4 :(得分:0)

您无法在函数中访问本地变量。变量必须设置为全局

function outside() {
global $variable;
    $variable = 'some value';
    inside();
}

function inside() {
global $variable;
    echo $variable; 
}

这有效