2014-01-24 127 views
0

为什么$ a不打印?全局范围不打印数据

什么是这种交替,我不想使用返回。

function abc() { 
    $a = 'abc'; 
    global $a; 
} 

abc(); 
echo $a; 
+2

好,首先你确实有*调用*函数。 – Jon

+0

为什么你不想使用'return'? – Arjan

+0

很简单,你不能在“变量”之后声明它为'global'“。全局必须在变量“之前”声明(而不是你为代码发布的内容)。另外,你需要将'echo $ a;'放在你的函数中,然后用函数调用'abc();'来代替函数外部的函数。 (测试) –

回答

1

为什么它不呼应的原因是因为两件事情:

1)您需要在您希望定义为全局的变量之前声明global

2)您还需要通话功能。

重写:

<?php 
function abc() 
{ 
global $a; 
$a = 'abc'; 
} 

abc(); 
echo $a; 

有关变量的作用域的详细信息,请访问PHP.net网站:

0

您可以使用define():

function abc() { 
    define("A", "abc"); 
} 
abc(); 
echo A; 

确保您调用该函数。我在回声之上添加了那个。

+1

但是你需要认识到'define()'与变量不一样。一旦定义,你不能改变一个const。 – Arjan

0

首先,您必须创建并分配一个变量。然后在你的函数中描述这是你想要使用的全局变量。

$a = 'zxc'; 

function abc() { 
    global $a; 

    $a = 'abc'; 
} 

abc(); 
echo $a; 

这是不是很好的想法使用golbal这种方式。我真的不明白为什么我非常想使用全局变量...

但我认为你更好地使用指针变量。

function abc(&$var){ 
    $var = 'abc'; 
} 

$a = 'zxc'; 

abc(&$a); 
echo $a; 

甚至会更好地创建一个对象,然后访问的变量:在此对象