2012-12-04 64 views
2

可能重复:
php function variable scopePHP全局变量不是一个函数内部工作

我使用下面的代码有一个全局变量进行测试。似乎一个全局变量不能在一个函数内进行比较。

为什么它不在输出中显示'hello world'?

下面是我想要的代码:

<?php  
$bool = 1; 

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

当我删除function boo(),“世界你好”显示。为什么函数不存在时不显示?

+4

你在哪里打电话给你的功能? – dandan78

+0

'$ bool'没有在函数范围中定义。您需要全局访问它,或者更好地将其传递给函数。 –

+1

你从来没有真正调用函数。然后,即使你是,你也不会看到你打印的'Hello Word',因为'$ bool'在函数范围中不存在。 – lafor

回答

3

看起来像功课,依然:

<?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'; 

} 


} 
?> 
+0

您实际上并未将bool的值设置为全局值 - 请参阅我的答案以获取正确的解决方案 –

+0

我在那里修正了它:P – Diego

2

调用你的函数,并通过$bool作为参数并返回值。

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

function boo($bool) { 

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

    return $bool; 
} 
+0

您实际上并未将bool的值设置为全局值 - 请参阅我的答案以获得正确的解决方案。 –

+0

@OliverAtkinson你是对的!我没有意识到'$ bool'正在更新,我只是认为'Hello World'。 – Tchoupi

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'; 
    } 
} 
+0

即使OP要求,我也不会推荐使用全局变量。 – Mike

0

用这种方式

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

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