我正在尝试执行这个php程序但是我收到了意想不到的输出。
<?php
$abc;
function test(){
$abc="world";
}
test();
echo "hello ".$abc;?>
Output : hello
Expected output : hello world
我是php的新手。请允许任何人告诉我我在这段代码中犯了什么错误
我知道,如果我将$abc="world"
放在function test()
的范围之外,它就会起作用
如何从函数中为全局变量赋值?
答案 0 :(得分:2)
您可以在课程中定义$abc
,然后使用$this
访问它。
<?php
class xyz {
public $abc = '';
function test(){
$this->abc = "world";
}
}
$a = new xyz();
$a->test();
echo "hello ". $a->abc;
?>
答案 1 :(得分:1)
通常认为使用全局变量是不好的做法,但您可以使用global
关键字来执行此操作。
<?php
$abc;
function test(){
global $abc;
$abc="world";
}
test();
echo "hello ".$abc;?>
答案 2 :(得分:1)
答案 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;
?>