我在另一个函数中读取一个函数中定义的变量时遇到麻烦。我:
global $a;
class test{
function aa($somevar){
switch ($myvar){
case 'value':
global $a;
$a = 15;
break;
}
}
function bb(){
global $a;
echo $a;
}
}
$foo = new test();
$ccc = $foo->bb();
var_dump($ccc);
我得到转储结果NULL。谢谢
在你的代码中没有任何地方可以给$a
赋值。
对$a
的唯一赋值是在test->aa
方法中,该方法使用不一致的变量,因此即使调用也永远不会赋值给$a
。
不能运行test->aa()
给a
赋值
$foo = new test();
$foo->aa();
$ccc = $foo->bb();
在这种情况下,$ccc
仍然是空的,因为你在$foo->bb()
中回显$a
,而不是返回它。
function bb() {
global $a;
return $a;
}
我也会远离全局变量,并在类的构造上传递变量$a。例如:
class test {
public $a;
function __construct($a = null) {
// pass initial var to $a if you want
$this->a = $a;
}
function aa($somevar) {
// reassign $a
$this->a = $somevar;
}
}
$foo = new test();
$foo->aa(5);
// or just $foo = new test(5);
var_dump($foo->a);
变量$a
应该是类
代码如下:
<?php
global $a;
class test{
function aa($somevar){
switch ($somevar){
case 'value':
global $a;
$a = 15;
break;
}
}
function bb(){
global $a;
echo $a;
return $a;
}
}
$foo = new test();
$foo->aa('value');
$ccc = $foo->bb();
var_dump($ccc);
?>
试试这个:
class test
{
public $a;
function aa($somevar)
{
switch ($myvar)
{
case 'value':
$this->a = 15;
break;
}
}
function bb()
{
return $this->a;
}
}
$foo = new test();
$ccc = $foo->bb();
var_dump($ccc);
更新:
<?php
class test
{
var $a;
function aa($somevar)
{
switch ($somevar)
{
case 'value':
$this->a = 15;
break;
}
}
function bb()
{
return $this->a;
}
}
$foo = new test();
$foo->aa('value');
$ccc = $foo->bb();
var_dump($ccc);
?>