从关联数组中删除某些键和值

时间:2018-01-21 19:52:51

标签: php arrays

我有一个如下所示的数组:

[['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);

但我无法让它工作

4 个答案:

答案 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()帮助程序及其方法。您需要查看pullmap,特别是transform

如果您不使用它,那么unset将从阵列中删除您想要的索引。

或者,只需创建一个新数组:

$a = []

foreach($tags as $tag) {
    $a[] = ['text' => $tag['title']];
}

编辑:修复

答案 3 :(得分:1)

$newTags = [];

foreach($tags as $tag) {
    $newTags[] = [['text'] => $tag['title']];
}
$tags = $newTags;