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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章