我有一个在我的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实例,我想访问原始函数。
答案 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;
}
...将访问外部范围。