【问题标题】:How to add elements to an array that is a property of an object in PHP?如何将元素添加到作为 PHP 中对象属性的数组中?
【发布时间】: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-&gt;passengers; 必须是 print_r($herbie-&gt;passengers);
  • addPassengers里面你需要使用$this-&gt;passengers,而不是$passengers,除此之外还有@AnantSingh---AlivetoDie评论,一切都很好。
  • 我只是想说@Nick。对象属性在行为上不是“全局变量”。他们需要$this 作为方法范围。
  • 从长远来看,我建议将类的属性设置为私有或受保护。这是为了防止对属性进行随机更改并可能使它们变得无意义(即使$year = 'sometime Soon')

标签: php html arrays object


【解决方案1】:

您需要进行 2 项更改:

1.在函数内部使用$this-&gt;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

正如其他 cmets 所说,您需要使用 private variables 而不是 public

示例:-https://3v4l.org/8RF9j

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2013-01-12
    • 2010-11-09
    • 2019-08-21
    • 2016-07-25
    • 1970-01-01
    • 2015-11-15
    • 2019-08-21
    • 2016-11-27
    相关资源
    最近更新 更多