我已经搜索了一段时间,但找不到一个简单问题的答案。在PHP中是否可以有一个对象数组?例如:
$ar=array();
$ar[]=$Obj1
$ar[]=$obj2
由于某些原因,我无法在任何地方找到答案。 我认为它是可能的,但我只需要确保一下。
要找到关于一般(而且相对简单)问题的答案,最好的地方是阅读PHP文档。特别是在你的情况下,你可以阅读更多关于对象的内容。你可以将stdObject和实例化的对象存储在数组中。事实上,有一个被称为“hydration”的过程,它将对象的成员变量从数据库行中填充值,然后将对象存储在数组中(可能与其他对象一起),并返回给调用代码进行访问。
-- 编辑 --
class Car
{
public $color;
public $type;
}
$myCar = new Car();
$myCar->color = 'red';
$myCar->type = 'sedan';
$yourCar = new Car();
$yourCar->color = 'blue';
$yourCar->type = 'suv';
$cars = array($myCar, $yourCar);
foreach ($cars as $car) {
echo 'This car is a ' . $car->color . ' ' . $car->type . "\n";
}
是的。
$array[] = new stdClass;
$array[] = new stdClass;
print_r($array);
结果是:
Array
(
[0] => stdClass Object
(
)
[1] => stdClass Object
(
)
)
你可以像这样做:
$posts = array(
(object) [
'title' => 'title 1',
'color' => 'green'
],
(object) [
'title' => 'title 2',
'color' => 'yellow'
],
(object) [
'title' => 'title 3',
'color' => 'red'
]
);
var_dump($posts);
array(3) {
[0]=>
object(stdClass)#1 (2) {
["title"]=>
string(7) "title 1"
["color"]=>
string(5) "green"
}
[1]=>
object(stdClass)#2 (2) {
["title"]=>
string(7) "title 2"
["color"]=>
string(6) "yellow"
}
[2]=>
object(stdClass)#3 (2) {
["title"]=>
string(7) "title 3"
["color"]=>
string(3) "red"
}
}
是的,在PHP中可以有对象数组。
class MyObject {
private $property;
public function __construct($property) {
$this->Property = $property;
}
}
$ListOfObjects[] = new myObject(1);
$ListOfObjects[] = new myObject(2);
$ListOfObjects[] = new myObject(3);
$ListOfObjects[] = new myObject(4);
print "<pre>";
print_r($ListOfObjects);
print "</pre>";
数组可以持有指针,所以当我需要一个对象数组时,我这样做。
$a = array();
$o = new Whatever_Class();
$a[] = &$o;
print_r($a);
另一个直观的解决方案可能是:
class Post
{
public $title;
public $date;
}
$posts = array();
$posts[0] = new Post();
$posts[0]->title = 'post sample 1';
$posts[0]->date = '1/1/2021';
$posts[1] = new Post();
$posts[1]->title = 'post sample 2';
$posts[1]->date = '2/2/2021';
foreach ($posts as $post) {
echo 'Post Title:' . $post->title . ' Post Date:' . $post->date . "\n";
}
echo $cars[0]->color;
打印第一个车的颜色,而echo $cars[1]->color;
则是打印第二个车的颜色? - Mike Warren$yourCar = new Car();
吗? 是否有更优雅的方法来做到这一点,就像JS中的let car = [{}, {},{}]
一样? - Mario Nezmah