【发布时间】:2020-04-05 07:20:43
【问题描述】:
我希望能够拥有一个包含数组作为属性的对象。我希望能够向该数组添加元素。我收到错误:警告:array_push() 期望参数 1 是数组,在第 18 行 vw1997Array 的 /wwwg32Np9 中给出 null (我在 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>
【问题讨论】:
-
echo $herbie->passengers;必须是print_r($herbie->passengers); -
在
addPassengers里面你需要使用$this->passengers,而不是$passengers,除此之外还有@AnantSingh---AlivetoDie评论,一切都很好。 -
我只是想说@Nick。对象属性在行为上不是“全局变量”。他们需要
$this作为方法范围。 -
从长远来看,我建议将类的属性设置为私有或受保护。这是为了防止对属性进行随机更改并可能使它们变得无意义(即使
$year= 'sometime Soon')