首页 > 解决方案 > 如何在php中创建包含对象的数组

问题描述

我想要一个包含对象的数组。例如。

public $aCarObjects = array();
$aCars = array('Audi','BMW','Ford');

foreach($aCars as $car){
  array_push($aCarObjects, new Car($car));
}

// Simplified class
class Car implements C{
   private $carName;

  public function __construct($carName){
     $this->carName = $carName;
  } 
}
interface C {}

这是我正在尝试的一个非常简短的版本。该类Car包含有关汽车的一些信息。

当我Interface CCar课堂上使用时。我无法将对象添加到数组中。为什么呢?

标签: phparraysoopobject

解决方案


此错误与数组无关,它是一个类提升错误(功能?),通过将您的类定义移动到new Car. 显然,如果 PHP实现了接口,则它们不会提升类定义

这是该现象的一个最小示例。

作品:

new Foo();
class Foo {}
interface Bar {} 

不:

new Foo(); # <-- error: Class 'Foo' not found
class Foo implements Bar {}
interface Bar {} 

也许这是PHP 悲伤的候选人?

这是您的代码的工作版本,它还解决了public第 1 行中的流浪关键字:

interface C {}

class Car implements C {
    private $carName;

    public function __construct($carName) {
        $this->carName = $carName;
    }
}

$aCarObjects = [];
$aCars = ['Audi', 'BMW', 'Ford'];

foreach ($aCars as $car) {
    array_push($aCarObjects, new Car($car));
}

print_r($aCarObjects);

输出:

Array
(
    [0] => Car Object
        (
            [carName:Car:private] => Audi
        )

    [1] => Car Object
        (
            [carName:Car:private] => BMW
        )

    [2] => Car Object
        (
            [carName:Car:private] => Ford
        )

)

试试看!


推荐阅读