首页 > 解决方案 > 拒绝数组中的某些索引参数

问题描述

给定一个数组,其中每个索引都有某些键值对,我如何选择某些键值对并拒绝其他键值对。

$channels = Channel::get()->toArray();

这将产生以下数组:

"channels": [
    {
        "id": 1,
        "name": "Info Release",
        "slug": "info-release",
        "desc": "Contains blah blah.",
        "access_level": "0",
        "created_at": "2018-12-02 01:23:50",
        "updated_at": "2018-12-05 07:54:41"
    },
    {
        "id": 11,
        "name": "Casual News",
        "slug": "casual-news",
        "desc": "Contains blah blah.",
        "access_level": "0",
        "created_at": "2018-12-05 05:34:50",
        "updated_at": "2018-12-05 07:54:32"
    },
    {
        "id": 12,
        "name": "haha",
        "slug": "haha",
        "desc": "Contains blah blah.",
        "access_level": "0",
        "created_at": "2018-12-29 23:27:16",
        "updated_at": "2018-12-29 23:27:16"
    }
],

将该数组变成这样的最佳方法是什么:

"channels": [
    {
        "id": 1,
        "name": "Information Release",
        "slug": "information-release",
    },
    {
        "id": 11,
        "name": "Casual News",
        "slug": "casual-news",
    },
    {
        "id": 12,
        "name": "haha",
        "slug": "haha",
    }
],

所以如果我写

$channels[0]->id

它会吐出来1

标签: phparrayslaraveleloquent

解决方案


你能试试这个吗

$viewFileds = ['id', 'name', 'slug'];

$channels = Channel::get()
                    ->map(function ($each) use ($viewFileds) {
                        return Arr::only($each, $viewFileds);
                    }); 

它将仅通过在$viewFileds

希望能帮助到你


推荐阅读