在为全局变量php分配值时获得意外输出

时间:2013-02-20 19:15:33

标签: php global-variables

我正在尝试执行这个php程序但是我收到了意想不到的输出。

<?php
$abc;
function test(){
    $abc="world";
}
test();
echo "hello ".$abc;?>

Output : hello
Expected output : hello world

我是php的新手。请允许任何人告诉我我在这段代码中犯了什么错误 我知道,如果我将$abc="world"放在function test()的范围之外,它就会起作用 如何从函数中为全局变量赋值?

5 个答案:

答案 0 :(得分:2)

您可以在课程中定义$abc,然后使用$this访问它。

 <?php 
  class xyz {
   public $abc = '';
   function test(){
    $this->abc = "world";
  }
 }

$a = new xyz();
$a->test();
echo "hello ". $a->abc;
?>

Demo

答案 1 :(得分:1)

通常认为使用全局变量是不好的做法,但您可以使用global关键字来执行此操作。

<?php
$abc;
function test(){
    global $abc;
    $abc="world";
}
test();
echo "hello ".$abc;?>

答案 2 :(得分:1)

$abc中的

test是本地的。如果要访问全局变量,则必须使用函数内的global $abc指定它。

请参阅here

答案 3 :(得分:1)

您需要告诉PHP编译器您要使用全局$ abc变量,如下所示:

$abc;
function test() {
    global $abc;
    $abc="world";
}
test();

因为php中的变量范围与javascript的变量范围不同,例如,因为你可能已经从那里越过了。

函数中定义的任何变量自然是PHP中该函数的私有。

答案 4 :(得分:1)

你在test()中编辑的$ abc与全局的$ abc不同。以您希望的方式修复代码:

<?php
$abc;
function test(){
    global $abc;
    $abc="world";
}
test();
echo "hello ".$abc;
?>