Мне нужно показать массив массива - PullRequest
0 голосов
/ 17 января 2019

Я разрабатываю CMS, которая использует файлы yaml для управления темой. Моя проблема в том, что мне нужно перечислить подменю меню. Например, у меня есть доступ к меню заголовка, где я могу изменить его содержимое, но в этом заголовке есть подменю, я просто хочу перечислить их.

У меня есть сервис, который выполняет поиск

Поскольку данные представляют собой массив, как мне распечатать их на экране?

public function query() {

    /* @var $request Request */
    $request = app('request');

    /* @var $website Site */
    $website = $request->route('website');
    $menu = $request->route('submenu');

    // Carega configurações do site
    $this->service->loadWebsite($website->slug);
    /*
    - title: menu1
      submenu:
       - title: submenu 1.1
       - title: submenu 1.2
    - title: menu2
      submenu:
       - title: submenu 2.1
    */


    /*
    - title: menu1
    - title: - submenu 1.1
    - title: - submenu 1.2
    - title: menu2
    - title: - submenu 2.1
    */
    // puxa os menus da configuração do site
    $menus = $this->service->getWebsiteConfig($website->slug, 'menu.' . $menu . '.menu');

    dd($menus);
    return $menus;
}

СЕРВИС

 protected function toWebisteMenuItemCollection(string $menu, array $rows) {
    return collect($rows)->map(function (array $data, string $key) use ($menu) {
        $data['id'] = $menu . '.' . $key;
        if(isset($data['submenu']) && is_array($data['submenu'])) {
            $data['submenu'] = $this->toWebisteMenuItemCollection($data['id'], $data['submenu']);
        }

        return new WebsiteMenuItem($data);
    });
}

дд ($ меню)

#attributes: array:3 [
    "title" => "Consórcio"
    "submenu" => Collection {#647
      #items: array:3 [
        0 => WebsiteMenuItem {#642
          #keyType: "string"
          #fillable: array:7 [
            0 => "id"
            1 => "title"
            2 => "label"
            3 => "imagem"
            4 => "website_image"
            5 => "icons"
            6 => "submenu"
          ]
          #connection: null
          #table: null
          #primaryKey: "id"
          +incrementing: true
          #with: []
          #withCount: []
          #perPage: 15
          +exists: false
          +wasRecentlyCreated: false
          #attributes: array:2 [
            "title" => "Planos de Consórcio"
            "id" => "header_submenu_menu.2.0"
          ]
          #original: []
          #changes: []
          #casts: []
          #dates: []
          #dateFormat: null
          #appends: []
          #dispatchesEvents: []
          #observables: []
          #relations: []
          #touches: []
          +timestamps: true
          #hidden: []
          #visible: []
          #guarded: array:1 [
            0 => "*"
          ]
        }
        1 => WebsiteMenuItem {#645
          #keyType: "string"
          #fillable: array:7 [
            0 => "id"
            1 => "title"
            2 => "label"
            3 => "imagem"
            4 => "website_image"
            5 => "icons"
            6 => "submenu"
          ]
          #connection: null
          #table: null
          #primaryKey: "id"
          +incrementing: true
          #with: []
          #withCount: []
          #perPage: 15
          +exists: false
          +wasRecentlyCreated: false
          #attributes: array:2 [
            "title" => "Portal do Consorciado"
            "id" => "header_submenu_menu.2.1"
          ]
          #original: []
          #changes: []
          #casts: []
          #dates: []
          #dateFormat: null
          #appends: []
          #dispatchesEvents: []
          #observables: []
          #relations: []
          #touches: []
          +timestamps: true
          #hidden: []
          #visible: []
          #guarded: array:1 [
            0 => "*"
          ]
        }
        2 => WebsiteMenuItem {#646
          #keyType: "string"
          #fillable: array:7 [
            0 => "id"
            1 => "title"
            2 => "label"
            3 => "imagem"
            4 => "website_image"
            5 => "icons"
            6 => "submenu"
          ]
          #connection: null
          #table: null
          #primaryKey: "id"
          +incrementing: true
          #with: []
          #withCount: []
          #perPage: 15
          +exists: false
          +wasRecentlyCreated: false
          #attributes: array:2 [
            "title" => "Como Funciona o Consórcio"
            "id" => "header_submenu_menu.2.2"
          ]
          #original: []
          #changes: []
          #casts: []
          #dates: []
          #dateFormat: null
          #appends: []
          #dispatchesEvents: []
          #observables: []
          #relations: []
          #touches: []
          +timestamps: true
          #hidden: []
          #visible: []
          #guarded: array:1 [
            0 => "*"
          ]
        }
      ]
    }

1 Ответ

0 голосов
/ 17 января 2019

var_dump ($ array_youd_like_to_print) выдаст вам все содержимое (даже вложенное) массива.

Вы можете использовать это как есть, если это решит вашу проблему, или использовать его, чтобы найти, где находится значение, которое вы ищете (и как получить к нему доступ в массиве), и распечатать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...