你经常要将一个对象或者对象的数组转换成一个数组,常见的情形是,为了通过 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
版权声明:本文为作者原创文章,转载请附上文章链接!