PHP实现 一位数组转化为多维数组

PHP实现 一位数组转化为多维数组:

<?php
$arr = [
    ['a', 'b', 'c', 'd', 'e',],
    ['a', 'b', 'b', 'd', 'e',],
    ['c', 't', 'v', 'd', 'e',],
];

function treeMap($arr){
    $dtree = [];
    foreach ($arr as $md5 => $item) {
        $dtree = array_merge_recursive($dtree, tree($item, 1));
    }
    return $dtree;
}

function tree($arr, $num) {
    $tree = [];
    $tmp = &$tree;
    foreach ($arr as $key) {
        $tmp[$key] = [];
        $tmp = &$tmp[$key];
    }
    $tmp = $num;
    return $tree;
}

print_r(treeMap($arr));

PHP实现 array_merge_recursive 函数:

<?php
$a1 = [
    'a' => [
        'b' => [
            'c' => [
                'd' => [
                ],
            ],
        ],
    ],
];

$a2 = [
    'a' => [
        'b' => [
            'c' => [
                'e' => [
                    'f' => 1,
                ],
            ],
        ],
    ],
];
$a3 = [];

function merge($a1, $a2) {
    if ( !is_array($a1)  && !is_array($a2) ) {
        return false;
    }
    $v1 = key($a1); $v2 = key($a2);
    if ( $v1 != $v2 ) {
        $tmpArr[$v1] = $a1[$v1];
        $tmpArr[$v2] = $a2[$v2];
        return $tmpArr;
    } else {
        $tmpArr[$v1] = merge($a1[$v1], $a2[$v1]);
    }
    return $tmpArr;
}

$newArr = merge($a1, $a2);
print_r($newArr);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值