PHP全局变量在函数内部不起作用

时间:2012-12-04 17:54:53

标签: php

  

可能重复:
  php function variable scope

我使用下面的代码来测试全局变量。似乎无法在函数内部比较全局变量。

为什么输出中没有显示'hello world'?

以下是我正在尝试的代码:

<?php    
$bool = 1;

function boo() {
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';    
    }
}
?> 

当我删除function boo()时,会显示“hello world”。为何在功能存在时不显示?

4 个答案:

答案 0 :(得分:6)

使用global $var访问您的变量

<?php    
$bool = 1;

function boo() {
    global $bool;
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';    
    }
}

boo();
?>

使用指针的更安全的方法是

function boo(&$bool) {
    if ($bool == 1) {
        $bool = 2;
        echo 'Hello World';
    }
}

答案 1 :(得分:5)

看起来像家庭作业,仍然:

<?php

$bool = 1;

boo();

function boo() {
global $bool;

if ($bool == 1) {
$bool = 2;
echo 'Hello World';

}


}
?> 

或者

<?php

$bool = 1;

boo(&$bool);

function boo(&$bool) {

if ($bool == 1) {
$bool = 2;
echo 'Hello World';

}


}
?> 

答案 2 :(得分:2)

调用您的函数,并将$bool作为参数传递并返回值。

$bool = 1;
$bool = boo($bool);

function boo($bool) {

  if ($bool == 1) {
    $bool = 2;
    echo 'Hello World';    
  }

  return $bool;
}

答案 3 :(得分:0)

使用这种方式

$bool = 1;
function boo($bool) {

  if ($bool == 1) {
    $bool = 2;
    echo 'Hello World';    
  }
}
boo($bool);