【问题标题】:replace some object properties with collection values用集合值替换一些对象属性
【发布时间】:2017-10-28 17:03:13
【问题描述】:

我需要用foreach 循环遍历array

这是我的array 的样子

$event->menu->add( 'MEDIA' );
            $event->menu->add(
                [
                    'text'       => 'About us',
                    'icon_color' => 'green',
                    'submenu'    => [
                        [
                            'text'       => 'menu items 1',
                            'icon_color' => "lime",
                            'url'        => 'admin/link',
                        ],
                    ],
                ] );

现在我需要将submenu 中的项目替换为来自数据库的数据

这是循环的样子

$abouts = About::all();
            foreach($abouts as $about){
                [
                    'text'       => 'About us',
                    'icon_color' => "lime",
                    'url'        => 'admin/about/1/edit',
                ];
            }

我的问题是

我怎样才能覆盖这个

'submenu'    => [
   [
        'text'       => 'menu items 1',
        'icon_color' => "lime",
        'url'        => 'admin/link',
   ],
],

用我的foreach 循环

转储数组看起来像这样

BuildingMenu {#256 ▼
  +menu: Builder {#246 ▼
    +menu: array:4 [▼
      0 => "MEDIA"
      1 => array:9 [▶]
      2 => "MEDIA"
      3 => array:12 [▼
        "text" => "About us"
        "icon_color" => "green"
        "submenu" => array:5 [▼
          0 => array:9 [▼
            "text" => "About us"
            "icon_color" => "lime"
            "url" => "admin/about/1/edit"
            "href" => "http://localhost:8000/admin/about/1/edit"
            "active" => true
            "classes" => array:1 [▶]
            "class" => "active"
            "top_nav_classes" => array:1 [▶]
            "top_nav_class" => "active"
          ]
        ]
        "href" => "#"
        "active" => true
        "submenu_open" => true
        "submenu_classes" => array:1 [▶]
        "submenu_class" => "treeview-menu"
        "classes" => array:2 [▶]
        "class" => "active treeview"
        "top_nav_classes" => array:2 [▶]
        "top_nav_class" => "active dropdown"
      ]
    ]

var-dump $about

Collection {#265 ▼
  #items: array:5 [▼
    0 => About {#266 ▼
      +translatedAttributes: array:2 [▶]
      #fillable: array:1 [▶]
      #connection: null
      #table: null
      #primaryKey: "id"
      #keyType: "int"
      #perPage: 15
      +incrementing: true
      +timestamps: true
      #attributes: array:4 [▶]
      #original: array:4 [▶]
      #relations: []
      #hidden: []
      #visible: []
      #appends: []
      #guarded: array:1 [▶]
      #dates: []
      #dateFormat: null
      #casts: []
      #touches: []
      #observables: []
      #with: []
      #morphClass: null
      +exists: true
      +wasRecentlyCreated: false
    }
    1 => About {#267 ▶}
    2 => About {#268 ▶}
    3 => About {#269 ▶}
    4 => About {#270 ▶}
  ]
}

提前致谢

【问题讨论】:

    标签: php arrays laravel foreach


    【解决方案1】:

    您可以从这里获得text 密钥:

    $event->menu->menu[3]['submenu'][0]['text']
    

    icon_colorurl 相同

    【讨论】:

    • 不,我需要将它放入数组中!要清楚,我需要用来自foreach 循环的值覆盖submenu
    • 据我了解,您需要这样做:$event->menu->menu[3]['submenu'] = $abouts; 如果没有,请显示 $abouts 数组中的内容:var_dump($abouts) 以及您想在这里做什么:foreach($abouts as $about){ [ 'text' => 'About us', 'icon_color' => "lime", 'url' => 'admin/about/1/edit', ]; }跨度>
    • 很好,我需要将foreach 循环值添加到'submenu' => [],所以在submenu 数组下创建循环如何用循环值覆盖这个数组,$abouts 中有什么大批?查看我对问题的编辑
    • 你有什么方法来操作Collection对象?我想一定有$about->getAttributes();这样的东西你使用一些框架(或CMS)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2020-03-27
    相关资源
    最近更新 更多