我的文件顶部有一个名为$ url的变量:
<?php
$url = "http://myurl.com";
稍后在同一个文件中,我有这段代码:
<?php
$url = "http://myurl.com";
[...]
function errorOut($error, $type = "info", $rel = "/")
{
echo $url;
}
?>
但是,这不起作用,因为它说$url
不是有效变量。我必须这样做:
<?php
$url = "http://myurl.com";
[...]
function errorOut($error, $type = "info", $rel = "/")
{
$url = "http://myurl.com";
echo $url;
}
?>
这对我没有任何意义,因为它不应该超出范围,因为它是功能上方的一层。如何使用早期的$url
变量?
答案 0 :(得分:1)
在您的函数中传递$url
:
function errorOut($error, $type = "info", $rel = "/", $url) //<<< here
并且还称它为:
errorOut('...','...','...',$url);
在您的答案中看到的非工作示例
$a = 'test1';
$b = 'test2';
define ('URL','one');
define ('URL', 'two');
test($a,$b);
function test ($a,$b){
echo $a;
echo $b;
echo URL;
}
不会工作,网址会留在&#39;一个&#39; //仅在您不想更改网址时才有效
答案 1 :(得分:1)
它们的范围不同。您必须让PHP知道您将在本地使用该全局。最好不要使用全局,而是将其作为变量传递。
<?php
$url = "http://myurl.com";
[...]
function errorOut($error, $type = "info", $rel = "/")
{
global $url;
echo $url;
}
?>
有关详细信息,请参阅Variable scope。
答案 2 :(得分:1)
我正在和IRC的某个人谈论这个问题(他在我加入之前也在这里发帖),他说我应该用
define("URL", 'http://example.com');
每当我引用该变量时,我应该使用URL,不是 $ url