使用php在数组中存储对象

前端之家收集整理的这篇文章主要介绍了使用php在数组中存储对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个从数据库提取行的函数,content-> id和content->类型用于动态调用已加载模型中的amethod来获取和格式化对象详细信息.返回对象后,它将添加到数组中.一切都很好,除了当我来使用数组虽然它有正确数量的项目,它们都包含相同的对象,即使我知道它们返回不同.我完全失去了这个,任何帮助/想法都会很棒!

代码如下:

foreach($query->result() as $content)
{
    $item = $this->{'mod_'.$content->type}->get($content->id);
    print_r($item);
    $items[] = $item;
}
print_r($items);

而print_r语句产生了这个:

stdClass Object
(
    [id] => 30
    [type] => page
)

stdClass Object
(
    [id] => 29
    [type] => page
)

Array
(
    [0] => stdClass Object
        (
            [id] => 29
            [type] => page
        )

    [1] => stdClass Object
        (
           [id] => 29
           [type] => page
        )

)
我猜想问题是你每次都通过引用从get函数到达同一个对象,然后通过引用添加它到数组,导致在get函数修改项时修改数组中的所有项.如果是这种情况,以下情况应该有效:
foreach($query->result() as $content)
{
    $item = $this->{'mod_'.$content->type}->get($content->id);
    print_r($item);
    $items[] = clone $item;
}
print_r($items);

猜你在找的PHP相关文章