我想知道在php中创建对象数组的权利是什么 我的目标是能够获得这样的数据:
$obj = new MyClass();
echo $obj[0]->parameter; //value1
echo $obj[1]->parameter; //value2
感谢您的时间。
编辑: 如果我想在课堂上这样做,它应该是这样的吗?
class MyClass{
public $property;
public function __construct() {
$this->property[] = new ProjectsList();
}
}
答案 0 :(得分:13)
以下任何一项都有效:
$myArray = array();
$myArray[] = new Object();
$myArray[1] = new Object();
array_push($myArray, new Object);
答案 1 :(得分:2)
试试这个,
$obj = array(new stdClass(), new stdClass())
或
$obj = array()
$obj[] = new stdClass()
$obj[] = new stdClass()
编辑:
Class
至stdClass
答案 2 :(得分:0)
希望能帮到你
$newArray[] = (object) array();
答案 3 :(得分:0)
重要提示...
PHP 数组的内存分配是指数级的。一个简单的例子:所有数组条目都适合一个数组,分配 2MB 的内存。如果此内存不再足以容纳所有数组条目,则内存分配将呈指数扩展,直到达到 PHP 内存限制。如果阵列需要超过本示例中的 2 MB,它将扩展为 4MB、16MB 等。
处理对象时,最好使用集合。 PHP 提供了 SplObjectStorage
。这种集合为其内容分配确切需要的内存。对这个集合的迭代就像使用 yield
。只为迭代中的当前对象分配内存。除此之外,SplObjectStorage
类只接受对象。应该非常适合您的目的。
<?php
declare('strict_types=1');
namespace Marcel;
$collection = new SplObjectStorage();
$object1 = new stdClass();
$object2 = new stdClass();
$collection->attach($object1);
$collection->attach($object2);
上面显示的代码允许更严格的搜索。
$collection->contains($object1); // returns true
分离一个项目就像一个魅力。
$collection->detach($object1);
$collection->contains($object1); // returns false
迭代适用于非常快的 foreach 循环或 while 循环。
$collection->rewind();
foreach ($collection as $object) {
// yielding works here
}
$collection->rewind();
while ($collection->valid()) {
// yielding also works here automatically
$collection->next();
}
答案 4 :(得分:-2)
<?php
$obj = (object) 'ciao';
echo $obj->scalar; // outputs 'ciao'
?>
编辑:我认为你不能添加这样的对象:
$this->property[] = new ProjectsList();
“new ProjectsList()”将是您如何从类创建对象。 ProjectsList需要是一个类。看起来更像是这样:
$obj = new ProjectsList;
$this->property[] = $obj;
你需要先确保ProjectsList存在。