0

我正在尝试执行这个 php 程序,但我得到了一个意外的输出。

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

Output : hello
Expected output : hello world

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

4

5 回答 5

2

您可以$abc在类内部定义,然后使用$this.

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

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

演示

于 2013-02-20T19:32:23.170 回答
1

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

<?php
$abc;
function test(){
    global $abc;
    $abc="world";
}
test();
echo "hello ".$abc;?>
于 2013-02-20T19:17:20.460 回答
1

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

这里

于 2013-02-20T19:17:20.750 回答
1

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

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

因为 php 中变量的作用域和 javascript 不同,比如你可能从那里跨过去了。

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

于 2013-02-20T19:17:56.137 回答
1

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

<?php
$abc;
function test(){
    global $abc;
    $abc="world";
}
test();
echo "hello ".$abc;
?>
于 2013-02-20T19:18:20.557 回答