关于变量范围和函数(PHP)的奇怪行为
在尝试在我的服务器上开发时,我注意到我正在开发的PHP脚本有一些奇怪的行为。似乎我无法访问在函数外部声明的变量关于变量范围和函数(PHP)的奇怪行为,php,Php,在尝试在我的服务器上开发时,我注意到我正在开发的PHP脚本有一些奇怪的行为。似乎我无法访问在函数外部声明的变量 <?php $name = 'Jamie'; function sayMyName($name){ echo "My name is: " . $name; } sayMyName($name); ?> 我决定编写一个简单的test.php文件,以确保它不是由我的其他代码引起的,并作为一个健全的检查 <?php $name = 'Jamie'; functi
<?php
$name = 'Jamie';
function sayMyName($name){
echo "My name is: " . $name;
}
sayMyName($name);
?>
我决定编写一个简单的test.php文件,以确保它不是由我的其他代码引起的,并作为一个健全的检查
<?php
$name = 'Jamie';
function sayMyName(){
echo "My name is: " . $name;
}
sayMyName();
?>
上面的代码输出:我的名字是:
,我的IDE甚至警告我,$name
未分配
我已经有一段时间没有使用PHP了,但我很确定这是有效的
这可能与PHP的设置有关吗?如果是的话,你知道是什么原因造成的吗我使用的是HostGator共享主机包,因此无法想象默认设置会太模糊。您需要将变量设置为全局变量,以便函数可以访问它
<?php
$name = 'Jamie';
global $name;
function sayMyName(){
echo "My name is: " . $name;
}
sayMyName();
?>
或者,您可以将变量传递给函数
<?php
$name = 'Jamie';
function sayMyName($name){
echo "My name is: " . $name;
}
sayMyName($name);
?>
在课堂上
class sayMyName
{
public function setName($name) {
return "My name is: ".$name;
}
}
$myname=New sayMyName();
echo $myname->setName('Jamie');
在两种情况下都将其传递给函数
sayMyName($name)
。或者将变量作为参数传递。我建议使用第二个选项。看起来我最近玩JS和Python玩得太多了,因此,澄清一下,默认情况下PHP从未自动将同一文件中的变量包含到函数的作用域中?看来我最近太多地使用JS和Python了,因此澄清一下,默认情况下PHP从未自动将同一文件中的变量包含到函数的作用域中?这既正确又不正确。考虑到本页上的示例,这是正确的,但如果我们讨论的是类,则不正确。As类属性可由类方法(函数)使用$this->propertyName