Php 为什么可以';我不能将这个对象放入数组中吗?

Php 为什么可以';我不能将这个对象放入数组中吗?,php,Php,在PHP中,通常可以将对象放置在数组中,如下所示: class Car{} $car = new Car(); // This runs without error $array['vehicle'] = $car; 我有一个自定义的MVC框架,我已经建立了,我需要控制器从模型中获取一个ORM对象,这样它就可以将它传递给视图。因此,我初始化我的用户对象: $user = new User(2); 现在,我想将该用户对象放入$data数组中,以便将其传递给视图: ($user->data返回O

在PHP中,通常可以将对象放置在数组中,如下所示:

class Car{}
$car = new Car();
// This runs without error
$array['vehicle'] = $car;
我有一个自定义的MVC框架,我已经建立了,我需要控制器从模型中获取一个ORM对象,这样它就可以将它传递给视图。因此,我初始化我的用户对象:

$user = new User(2);
现在,我想将该用户对象放入
$data
数组中,以便将其传递给视图:

($user->data返回ORM对象)

问题是,执行此操作后,我收到以下错误:

 Object of class ORM could not be converted to string
我做错了什么?有什么我遗漏的吗?
提前谢谢你的帮助

编辑:这里是$user->data所指的内容,它来自
类user的构造函数

(我使用的是ORM)

如果您收到如下错误消息:

Object of class ORM could not be converted to string
您应该问的第一个问题是,“为什么必须将其转换为字符串”?数组可以接受一个字符串,因此您可以猜测
$data
实际上是一个字符串,PHP认为您需要修改
$data[0]

正如您所看到的,如果您不小心,动态类型语言可能会陷入混乱。 当变量显示可疑行为时,请尝试使用
var\u dump()
查看变量中的实际内容


在使用数组之前显式初始化数组(例如:
$my_array=array();
)也是一个好主意。

$data是数组吗?或者实现ArrayAccess的对象?如果执行
$test=array()$test['user']=$user->data
?NullUserException:这很有趣,它可以工作-但是我想知道为什么在
类Car{}
示例中不需要这样做?两个变量的初始化方式相同,为什么它们在不同的类中工作方式不同?如果去掉
$test=array()零件?我猜您的
$data
var可能是另外一回事。在分配之前,您是否尝试过执行
var\u dump($data)
?NullUserException,您应该提交您的评论作为答案,以便我可以接受它-我发现了问题。以前,
$data
已初始化为字符串。当我试图将一个对象放入其中时,它犹豫了,因为它是一个字符串,而不是一个能够包含对象的数组。哎呀。
$this->data = ORM::for_table("users")->find_one($this->user_id);
Object of class ORM could not be converted to string