感谢您提前的时间。我是php的新手,遇到了一个奇怪的问题,至少对我来说这很奇怪。它是关于在字符串模板中显示变量。请参阅以下代码:
public function welcome() {
$data="everyone";
$b = $this->returnTemplate();
$a = "<div>dear $data</div>";
}
public function returnTemplate()
{
return "<div>dear $data</div>";
}
我只是认为$ a和$ b应该是相同的值<div>dear everyone</div>
,但事实上只有$ a是$ b而{b}是<div>dear </div>
。
这真让我困惑,我想知道为什么?有人可以向我解释一下吗?
提前致谢,欢迎任何反馈!
答案 0 :(得分:1)
您遇到'变量范围'。正如您在welcome()函数中定义了变量$ data一样,它在该函数之外的任何地方都不可用。要解决这个问题,请将其移出函数或将其作为参数传递给returnTemplate函数。
答案 1 :(得分:0)
public function welcome() {
$data="everyone";
$b = $this->returnTemplate($data);
$a = "<div>dear $data</div>";
}
public function returnTemplate($data)
{
return "<div>dear $data</div>";
}
这有效。
答案 2 :(得分:0)
如前所述,您试图破坏变量范围。换句话说,您尝试在其范围之外使用局部变量(您最初声明/定义的函数)。 有两种方法可以实现您的目标:
1)将变量作为参数传递给函数,然后使用返回的值,如下所示:
public function welcome() {
$data="everyone";
$b = $this->returnTemplate($data);
$a = "<div>dear $data</div>";
}
public function returnTemplate($data)
{
return "<div>dear $data</div>";
}
2)在top / start上将变量声明为 GLOBAL 。因此,它将具有特定功能的范围,并实现您正在尝试的功能。