函数不使用上面定义的变量

时间:2014-11-04 23:52:11

标签: php

我的文件顶部有一个名为$ 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变量?

3 个答案:

答案 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