Задать вопрос
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 ( )". Как можно реализовать это??
  • Вопрос задан
  • 130 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽