Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

372
Visualizações
How to convert array and sub array to collection in Laravel?

I want to convert all of my static data to collection in Laravel.

This is my data:

static $menu_list = [
    [
        'path' => 'admin/report/transaction',
        'active' => 'admin/report',
        'name' => 'Report',
        'icon' => 'file-text',
        'children' => [
            'path' => 'admin/report/transaction',
            'active' => 'admin/report/transaction',
            'name' => 'Transaction',
        ],
    ],
];

This function converts my data to array:

public static function menuList()
{
    $menu_list = collect(self::$menu_list)->map(function ($voucher) {
        return (object) $voucher;
    });
}

but function above can only convert main of array, it can't convert children => [...] to collection.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

You need a recursive call.

public static function convertToCollection()
{
    $menu_list = self::menuList(self::$menu_list);
}

public static function menuList($list)
{
    return collect($list)->map(function ($voucher) {
        if(is_array($voucher)) {
          return self::menuList($voucher)
        }
        return $voucher;
    });
}
over 4 years ago · Santiago Trujillo Relatório

0

You need to use collect() inside map() again:

public static function menuList()
{
    $menu_list = collect(self::$menu_list)->map(function ($voucher) {
        return (object) array_merge($voucher, [
            'children' => collect($voucher['children'])
        ]);
    });
}
over 4 years ago · Santiago Trujillo Relatório

0

Just add a small code peace to your approach.

  $menu_list = collect(self::$menu_list)->map(function ($voucher) {
             $voucher['children'] = (object) $voucher['children'];
            return (object) $voucher;
        });

Output

   Illuminate\Support\Collection {#574 ▼
  #items: array:1 [▼
    0 => {#573 ▼
      +"path": "admin/report/transaction"
      +"active": "admin/report"
      +"name": "Report"
      +"icon": "file-text"
      +"children": {#567 ▼
        +"path": "admin/report/transaction"
        +"active": "admin/report/transaction"
        +"name": "Transaction"
      }
    }
  ]
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda