我有一个如下所示的数组:
[['title'= >'my title','time'=>'14:00','date'=>'feb 2'],['title'= >'another','time'=>'14:00','date'=>'feb 2']]
现在,我希望从阵列中删除所有时间和日期键,并将标题重命名为文字所以它看起来像这样:
[['text'= >'my title'],['text'= >'another title']]
我尝试过使用
$tags = array_map(function($tag) {
return array(
'text' => $tag['title'],
);
}, $tags);
但我无法让它工作
答案 0 :(得分:2)
Laravel解决方案:
collect($array)->transform(function($i) { return ['text' => $i['title']]; })->toArray();
答案 1 :(得分:2)
您可以转换您的收藏品,
$mycollection = $myModel->get();
return $mycollection->map(function($row){
return [
'text' => $row->title,
];
});
或者您可以使用Fractal:http://fractal.thephpleague.com/transformers/
答案 2 :(得分:1)
这个问题不是Laravel特有的,但是既然你提到了它:
为方便起见,使用collect()
帮助程序及其方法。您需要查看pull
,map
,特别是transform
。
如果您不使用它,那么unset
将从阵列中删除您想要的索引。
或者,只需创建一个新数组:
$a = []
foreach($tags as $tag) {
$a[] = ['text' => $tag['title']];
}
编辑:修复
答案 3 :(得分:1)
$newTags = [];
foreach($tags as $tag) {
$newTags[] = [['text'] => $tag['title']];
}
$tags = $newTags;