创建映射数组键的数组

Create array of mapped array keys

我正在尝试创建一个显示数组布局的数组。

这将是输入:

    $array = [
        'company' => [
            'contacts' => [
                'first_names',
                'last_name',
                'emails',
                'phones' => [
                    'test'
                ]
            ],
            'addresses' => [
                'postal_code'
            ],
        ]
    ];

这就是我试图让输出看起来像的东西:

    $array = [
        'company.contacts.phones'
        'company.addresses'
    ];

几个小时以来,我一直在努力解决这个问题,但一直没有想出解决方案。它需要与任何 layout/depth 输入数组一起使用。

借助一些 Laravel 助手和集合,这可以轻松完成
这是:

 $array = [
            'company' => [
                'contacts'  => [
                    'first_names',
                    'last_name',
                    'emails',
                    'phones' => [
                        'test',
                    ],
                ],
                'addresses' => [
                    'postal_code',
                ],
            ],
        ];

        collect(Arr::dot($array))->keys()->map(function ($key)
        {
            return Str::beforeLast($key, '.');
        })->unique()->dd();

输出:

array:3 [▼
  0 => "company.contacts"
  3 => "company.contacts.phones"
  4 => "company.addresses"
]