【问题标题】:In PHP, can the local array variable in class member functions referenced by class member variable?在PHP中,类成员变量引用的类成员函数中的局部数组变量可以吗?
【发布时间】:2014-12-22 19:05:32
【问题描述】:
class A {
    public $a;
    public function foo() {
        $b = array("a", "b");   
        $this->a = &$b;
    }
}

会发生什么?

$b 是一个pointer 到一个array 并且当函数foo() 退出时,$b 消失并且数组仍然存在?

如果数组也消失了,$a 将失去对它的引用。

谁能帮我解释一下?

【问题讨论】:

  • 试试this。我认为这应该有助于解决这个问题。

标签: php variables pointers reference local


【解决方案1】:

我认为你的意思是这样的:

是的,你可以!在这里,您将array $b 分配为对$a 的引用并更改$b。然后你输出$a 和修改后的$b一样!

<?php 

    class A {

        public $a;

        function foo() {
            $b = array("a", "b");
            $this->a = &$b;

            $b[] = "c";
            print_r($b);
            unset($b);
            print_r($b);
            print_r($this->a);
        }

        function foo2() {
            print_r($this->a);
        }
    }

    $test = new A();
    $test->foo();
    $test->foo2();

?>

输出:

Array ( [0] => a [1] => b [2] => c ) //$b
Notice: Undefined variable: b in C:\xampp\htdocs\Testing\index.php on line 27  //after unset $b
Array ( [0] => a [1] => b [2] => c )  //$a from the function foo
Array ( [0] => a [1] => b [2] => c )  //$a from the function foo2

评论后更新:

(带全局变量)

<?php

    global $c;
    $c = 42;

    $d = &$c;
    $c = 2;
    unset($c);    

    echo $d;


?>

输出:

2

【讨论】:

    最近更新 更多