对象转换为数组(Converting Objects to Arrays)

  老A   2019-12-01 16:17:00  0  278  
关注 喜欢 鲜花 收藏 评论

你经常要将一个对象或者对象的数组转换成一个数组,常见的情形是,为了通过 REST API 提供数据数组(或其他使用方式), 将 AR 模型(活动记录模型)转换成数组。如下代码可完成这个工作:

$posts = Post::find()->limit(10)->all();
$data = ArrayHelper::toArray($posts, [
    'app\models\Post' => [
        'id',
        'title',
        // the key name in array result => property name
        'createTime' => 'created_at',
        // the key name in array result => anonymous function
        'length' => function ($post) {
            return strlen($post->content);
        },
    ],
]);

第一个参数包含我们想要转换的数据,在本例中,我们要转换一个叫 Post 的 AR 模型。

第二个参数是每个类的转换映射表,我们在此设置了一个 Post 模型的映射。 每个映射数组包含一组的映射,每个映射可以是:

  • 一个要包含的照原样的字段名(和类中属性的名称一致);
  • 一个由你可随意取名的键名和你想从中取值的模型列名组成的键值对;
  • 一个由你可随意取名的键名和有返回值的回调函数组成的键值对;

这上面的转换结果将会是:

[
    'id' => 123,
    'title' => 'test',
    'createTime' => '2013-01-01 12:00AM',
    'length' => 301,
]

也可以在一个特定的类中实现 Arrayable 接口, 从而为其对象提供默认的转换成数组的方法。

作者:老A
来源:嘻吖仔
原文:http://xiaohewan.com/article/show?id=63
版权声明:本文为作者原创文章,转载请附上文章链接!

评论
请先登录后再发布评论
全部评论