二维数组转一维数组键值拼接

laravel里有对应的方法可以处理吗

$collection = [
  'Apple' => [
  'name' => 'iPhone 6S',
  'brand' => 'Apple'
  ],
  'Samsung' => [
  'name' => 'Galaxy S7',
  'brand' => 'Samsung'
  ],
];
$data = [];
foreach ($collection as $key => $value) {
  foreach ($value as $k => $val) {
  $data[$key.'_'.$k] = $val;
  }
}
//输出
[
  "Apple_name" => "iPhone 6S", 
  "Apple_brand" => "Apple", 
  "Samsung_name" => "Galaxy S7", 
  "Samsung_brand" => "Samsung",
];
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 5

.展开的就有

$collection = [
    'Apple' => [
        'name' => 'iPhone 6S',
        'brand' => 'Apple'
    ],
    'Samsung' => [
        'name' => 'Galaxy S7',
        'brand' => 'Samsung'
    ],
];
$arr = Arr::dot($collection);
dd($arr);
1周前 评论

同楼上 把官方提供 .修改为一个可变参数就能自定义拼接符

1周前 评论
忆往昔弹指间 1周前

自己不会看文档吗?

1周前 评论
public static function dot($array, $prepend = '',$str = '.')
    {
        $results = [];
        foreach ($array as $key => $value) {
            if (is_array($value) && ! empty($value)) {
                 $results = array_merge($results, static::dot($value, $prepend.$key.$str));
            } else {
                 $results[$prepend.$key] = $value;
            }
        }

        return $results;
    }
1周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!