PHP - 将对象数组转换为可用对象

时间:2011-02-10 09:56:00

标签: php arrays object multidimensional-array

我有一个包含状态对象的数组,这些状态对象包含一个类似对象的数组,还包含注释对象

我的问题是,现在我的数组中有对象,如何将它们拉出来?这样我以后可以将它们保存到数据库中。

感谢您的帮助

安迪

e.g。

Array
(
    [0] => cStatus Object
        (
            [statusId:cStatus:private] => 123123123
            [message:cStatus:private] => powpowpow
            [updated_time:cStatus:private] => 2011-01-27T15:52:48+0000
            [likes:cStatus:private] => Array
                (
                )

            [comments:cStatus:private] => Comment Object
                (
                    [commentId:Comment:private] => 123123123
                    [created_time:Comment:private] => 2011-01-30T20:18:50+0000
                    [message:Comment:private] => Kazam
                    [name:Comment:private] => Blue man
                    [createdBy:Comment:private] => 124124
                    [likes:Comment:private] => Array
                        (
                        )

                )

        )

    [1] => cStatus Object
        (
            [statusId:cStatus:private] => 5125125
            [message:cStatus:private] => Gawdam fruit and fibre is tasty :D
            [updated_time:cStatus:private] => 2011-01-25T20:21:56+0000
            [likes:cStatus:private] => Array
                (
                    [0] => Like Object
                        (
                            [likeId:Like:private] => 120409086
                            [name:Like:private] => Jt
                        )

                )

            [comments:cStatus:private] => Array
                (
                )

        )

    [2] => cStatus Object
        (
            [statusId:cStatus:private] => 5215215
            [message:cStatus:private] => Dear 2
            [updated_time:cStatus:private] => 2011-01-18T08:28:50+0000
            [likes:cStatus:private] => Array
                (
                    [0] => Like Object
                        (
                            [likeId:Like:private] => 2456
                            [name:Like:private] => Edw2r
                        )

                    [1] => Like Object
                        (
                            [likeId:Like:private] => 2452412
                            [name:Like:private] => aw1
                        )

                    [2] => Like Object
                        (
                            [likeId:Like:private] => 12412411
                            [name:Like:private] => wqw
                        )

                )

            [comments:cStatus:private] => Array
                (
                )

        )
)

1 个答案:

答案 0 :(得分:2)

您可以使用foreach和各个对象的访问属性进行保存。我假设您使用的是getter和setter方法,因为您的所有属性都是私有的。使用foreach提供“as”关键字,以便在循环执行时为每个单独的对象实例创建别名。

<?foreach($obj as $status){
  $status_text = $status->getMessage();
  //save this to database using your favored method;
  $comments = $status->getComments();
  //nest the foreach for all the comments to save them as well, if you like
  foreach($comments as $comment){
   //Save $comment here as well
  }
}
?>

这对于像您这样的复杂嵌套对象尤其方便,因为单个迭代器可以访问公共方法和属性,以便于操作,例如保存到数据库。