Как добавить элементы в массив, который является свойством объекта в PHP? - PullRequest
0 голосов
/ 05 апреля 2020

Я хотел бы иметь возможность иметь объект, который содержит массив в качестве свойства. Я хотел бы иметь возможность добавлять элементы в этот массив. Я получаю ошибки: Предупреждение: array_pu sh () ожидает, что параметром 1 будет массив, значение NULL в / wwwg32Np9 в строке 18 vw1997Array (я запускаю это на демонстрационных страницах w3schools)

<!DOCTYPE html>
<html>
<body>

<?php
class Car {
    public $model; 
    public $year; 
    public $passengers;

    function __construct() {
        $this->model = "";
        $this->year = " ";
        $this->passengers=array(); //?not sure if this is right
    }
//wrote a function to see if I could add elements to the array this way

function addPassengers($passenger)
    {
        array_push($passengers, $passenger); 
        return $passengers; 
    }
}
// create an object
$herbie = new Car(); 
$herbie->model = "vw"; 
$herbie->year = "1997"; 
$herbie->addPassengers("Mike"); //? is this right? 

// show object properties
echo $herbie->model;
echo $herbie->year; 
echo $herbie->passengers;  //?is this right? 
?>

</body>
</html>

1 Ответ

1 голос
/ 05 апреля 2020

Вам нужно сделать 2 изменения:

1.Использовать $this->passengers внутреннюю функцию.

2.Использовать print_r(), чтобы распечатать ее

<?php

class Car {
    public $model; 
    public $year; 
    public $passengers;

    function __construct() {
        $this->model = "";
        $this->year = " ";
        $this->passengers=array();
    }

function addPassengers($passenger)
    {
        array_push($this->passengers, $passenger); 
        return $this->passengers; 
    }
}

$herbie = new Car(); 
$herbie->model = "vw"; 
$herbie->year = "1997"; 
$herbie->addPassengers("Mike");


echo $herbie->model;
echo $herbie->year; 
print_r($herbie->passengers);
?>

Вывод : - https://3v4l.org/aQn2h

Примечание: - Вы можете написать меньше кода и получить такой же вывод: https://3v4l.org/KTVAp

Как отмечалось в других комментариях, вам нужно использовать private variables вместо publi c

Пример примера: - https://3v4l.org/8RF9j

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...