Frage

how to extend array in parent class in PHP?

I have something like this

class ParentClass {
    $this->player = array(
        'class' => array(
            'basic' => array(
                'name'      => $data['name'],
                'image'     => $data['img']
            )
        )
    );
}

how to extend $this->player array without erasing data in parent class with this data

class ChildClass extends ParentClass {
    $this->player => array(
        'class' => array(
            'loadout'   => array(
                'primary'   => array(
                    'name'      => $data1['name'],
                    'type'      => $data1['type']
                )
            )
        )
    );
}

so the output will be

    (
        'class' => array(
            'basic' => array(
                'name'      => $data['name'],
                'image'     => $data['img']
            ),
            'loadout'   => array(
                'primary'   => array(
                    'name'      => $data1['name'],
                    'type'      => $data1['type']
                )
            )
        )
    )

I have tried this

class ParentClass {
    public $player;

    public function __construct($class) {
        $this->player = array(
            'class' => array(
                'basic' => array(
                    'name'      => $data['name'],
                    'image'     => $data['img']
                )
            )
        );
    }
}

class ChildClass extends ParentClass {
    public function __construct($class) {

        parent::__construct($class);

        $this->player['class'] = array(
            'loadout'   => array(
                'primary'   => array(
                    'name'      => $data1['name'],
                    'type'      => $data1['type']
                )
            )
        );
    }

    public function getData() {
        return $this->player;
    }
}

but it only prints

    (
        'class' => array(
            'loadout'   => array(
                'primary'   => array(
                    'name'      => $data1['name'],
                    'type'      => $data1['type']
                )
            )
        )
    )
War es hilfreich?

Lösung

Your construct should look like this:

public function __construct($class) {

    parent::__construct($class);

    $this->player['class']['loadout'] = 
       array(
           'primary'   => array(
               'name'      => $data1['name'],
               'type'      => $data1['type']
            )
      );

}

Your code before overrode class with a new array. This code sets loadout of the array class to the new array.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top