PHP函数范围:如何扩展?

时间:2017-01-03 17:55:36

标签: php html

我有一个在我的php页面开头调用的函数,它在php的块中调用,但不是在html表单中进一步调用。 php函数的范围有多远?如何扩展它以将其包含在html表单中?

以下是我的代码示例: 编辑:这不是我的实际代码。它只是显示功能范围未达到的位置。

<?php
function foo(){
    $x = 1;
    return $x;
}

if (isset($_POST['submit1']) and ! empty($_POST['submit1'])){
    $x = foo();

}
?>

<div>
    <form action="" method="POST">
        <input type='submit' name='submit1' value='Submit'>
    </form>
</div>
<div>
    <form action="" method="POST">
        <?php
        $x = foo();
        echo "<input type='text' value='".$x."'>";
        ?>
        <input type='submit' value='Submit' name='submit2'>
    </form>
</div>

调用函数的第一个实例,但不是第二个实例。有人可以向我解释原因。我是否需要以第二种形式再次创建函数,或者是否有办法扩展第一个函数的范围。 谢谢!

编辑:这不是像链接问题这样的函数内部的函数。这是一个单独的php实例,我想访问原始函数。

1 个答案:

答案 0 :(得分:2)

你的代码有点令人困惑,因为无论$ x在开头有哪个值,$ x总是未定义的(注意:未定义的索引)。

function foo(){
    return $x;
}

没有$ x,不会访问外部范围。

function foo($x){
    return $x;
}

function foo() use ($x) {
    return $x;
}

function foo(){
    global $x;
    return $x;
}

...将访问外部范围。