Может ли в PHP переменная локального массива в функциях-членах класса, на которые ссылается переменная-член класса?

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

что случится?

$b это pointer для array и когда функция foo() выходов, $b исчезает, а массив остается там?

Если массив также исчезает, $a потеряет ссылку на это.

Кто-нибудь может объяснить это для меня?

-2

Решение

Я думаю, что вы имеете в виду что-то вроде этого:

И да, вы можете! Здесь вы назначаете 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
0

Другие решения

Других решений пока нет …