razrab228
@razrab228
зачем тебе знать это?

Как изменить переменную, которая находится вне класса?

Здравствуйте! Есть такой вот код:

$array = [];
print_r($array);
$grid = new Grid($array);
$grid->DefineGridColumn();
print_r($array);


Вот класс:
class Grid {
    private $array;

    public function __construct($array) {
        $this->array = $array;
    }

    function DefineGridColumn() {
        array_push($this->array, [
        	"123"=>"456"
        ]);
    }
}


массив не меняется, всегда выводится "Array ( )". Как можно реализовать это??
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
class Grid {
    ...
    public function getArray(): array
    {
        return $this->array;
    }
}
...
$grid = new Grid($array);
$grid->DefineGridColumn();
$array = $grid->getArray();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега PHP
frontend developer
public function DefineGridColumn() {
        array_push($this->array, [
        	"123"=>"456"
        ]);
    return $this->array;
    }

…

$array = [];
print_r($array);
$grid = new Grid($array);
$array = $grid->DefineGridColumn();
print_r($array);
Ответ написан
Комментировать
@rPman
На будущее, когда вариант Rsa97 не прокатит, нужно передавать объекты по ссылке
class MyClass {
    private $array;

    public function __construct(&$array) {
        $this->array = &$array;
	$this->array['123']='456';
    }
}

$array = [];
$grid = new MyClass($array);
print_r($array);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы