Магические методы и многомерные массивы

Духовность™

Продвинутый новичок
Магические методы и многомерные массивы

PHP:
error_reporting(E_ALL);

class a
{
    private $data;
    
    public function __construct()
    {
        $this->data = array();
    }
    
    public function __set($key, $value)
    {
        $this->data[$key] = $value;
    }

    public function __get($key)
    {
        return isset($this->data[$key]) ? $this->data[$key] : null;
    }

    public function __unset($key)
    {
        unset($this->data[$key]);
    }
}

$class = new a();
$class->myvar = 'ляляля';
$class->myarr = array('emement 1', 'emement 2');

unset($class->myvar); // всё ок

var_dump($class->myvar);

unset($class->myarr[0]); // Notice: Indirect modification of overloaded property a::$myarr has no effect 

var_dump($class->myarr);
Собственно код все иллюстрирует. Мне нужно удалить элемент массива. Как это сделать?
 

Zetruger

ivan.chistyakov.name
так а как вам представляется вызов
public function __unset($key)
в данном констекте
unset($class->myarr[0]);
?
 

FB3

Новичок
Создать ссылку на массив может быть, а потом unset(ссылка[ключ])? Или тоже не получится?
 

FractalizeR

Новичок
Может, задачу поподробнее опишете? В вашем примере с помощью магических методов не только unset не будет работать, но и простое присваивание тоже.
 

AmdY

Пью пиво
Команда форума
а может воспользуешься spl ArrayAccess
 
Сверху