Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中创建包含对象的数组_Php_Arrays_Oop_Object - Fatal编程技术网

如何在php中创建包含对象的数组

如何在php中创建包含对象的数组,php,arrays,oop,object,Php,Arrays,Oop,Object,我想要一个包含对象的数组。比如说 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 __constru

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

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
包含一些关于汽车的信息


当我在
Car
类中使用
界面时。我无法将对象添加到数组中。为什么会这样

此错误与数组无关,它是一个类提升错误(功能?),可通过将类定义移到调用
新车
上方来修复。显然,PHP

这里有一个最简单的例子

作品:

没有:

输出:

数组
(
[0]=>汽车对象
(
[卡纳姆:汽车:私人]=>奥迪
)
[1] =>汽车物体
(
[卡纳姆:汽车:私人]=>宝马
)
[2] =>汽车物体
(
[carName:Car:private]=>福特
)
)

此错误与数组无关,它是一个类提升错误(功能?),可通过将类定义移到调用
新车
上方来修复。显然,PHP

这里有一个最简单的例子

作品:

没有:

输出:

数组
(
[0]=>汽车对象
(
[卡纳姆:汽车:私人]=>奥迪
)
[1] =>汽车物体
(
[卡纳姆:汽车:私人]=>宝马
)
[2] =>汽车物体
(
[carName:Car:private]=>福特
)
)

我发现了一些可能对你有帮助的东西->即使是同一个例子是的,你也可以在array\u push中使用“new”。简写版(只是一个简单的语法)是
$aCarObjects[]=新车($Car)您的代码有什么问题吗?有什么不正常的吗?@Jeff
array\u push
$array[]
不一样-它在大多数情况下只做相同的事情使用现代语法:$arrray[]替换array\u push($array),至少4年了!看到我发现了一些可能对你有帮助的东西,我很难过->即使是同一个例子是的,你可以在array\u push中使用“new”。简写版(只是一个简单的语法)是
$aCarObjects[]=新车($Car)您的代码有什么问题吗?有什么不正常的吗?@Jeff
array\u push
$array[]
不一样-它在大多数情况下只做相同的事情使用现代语法:$arrray[]替换array\u push($array),至少4年了!见到你很伤心,谢谢你的评论。构造部分是一个打字错误,其他的事情很好知道。我的问题是接口,我没有提到。问题是在调用
newcar
之后,您已经声明了类。将类定义移动到文件的顶部;如果它实现了一个接口,它就不会被提升,这很奇怪。真的是这样!非常感谢所有的答案!谢谢你的评论。构造部分是一个打字错误,其他的事情很好知道。我的问题是接口,我没有提到。问题是在调用
newcar
之后,您已经声明了类。将类定义移动到文件的顶部;如果它实现了一个接口,它就不会被提升,这很奇怪。真的是这样!非常感谢所有的答案!
new Foo();
class Foo {}
interface Bar {} 
new Foo(); # <-- error: Class 'Foo' not found
class Foo implements Bar {}
interface Bar {} 
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);