为什么我不能将此对象放入数组中?

时间:2011-09-22 18:15:54

标签: php

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

class Car{}
$car = new Car();
// This runs without error
$array['vehicle'] = $car;

我有一个我自己构建的自定义MVC框架,我需要控制器从模型中获取ORM对象,因此它可以将其传递给视图。所以,我初始化我的用户对象:

$user = new User(2);

现在,我想将该用户对象放入$data数组中,以便将其传递给视图:

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

$array['user'] = $user->data;

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

 Object of class ORM could not be converted to string

我做错了什么?有什么我想念的吗? 感谢您提前提供任何帮助。

编辑:这是$ user->数据引用的内容,这来自class User的构造函数:

$this->data = ORM::for_table("users")->find_one($this->user_id);

(我使用Idiorm作为ORM)

1 个答案:

答案 0 :(得分:3)

如果收到如下错误消息:

Object of class ORM could not be converted to string

您应该问的第一个问题是,“为什么必须将其转换为字符串”?数组可以很好地使用字符串,因此您可以猜测$data实际上是一个字符串,PHP认为您要修改$data[0]

正如您所见,如果您不小心,动态类型语言可能会让人感到困惑。 当您的变量显示可疑行为时,请尝试使用var_dump()查看其中的实际内容。

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