如何根据原始数组中的值将 PHP 多维数组转换为另一个数组?

How to convert a PHP multi-dimensional array into another array based on a value within the original array(s)?

我在这上面花了一个星期,我正在尝试想出一种方法来访问多维数组中的数据并将其输出到另一个数组,根据数组中的值进行不同的重组.而不是 post 行和行的损坏代码,我展示了我的示例简化:

这里是原始数组:

array(2) {
    [0] => array(2) {
        ["aaa"] => array(2) {
            ["a19a3234b881ce"] => array(2) {
                ["pid"] => int(29301)
                ["vid"] => int(29334)
                ["idx"] => int(88888)
            }
            ["a7aa94c38aa49caa"] => array(2) {
                ["pid"] => int(20568)
                ["vid"] => int(26547)
                ["idx"] => int(88888)
            }
        }
        ["bbb"] => array(2) {
            ["bsfn"] => string(4) "Apple"
            ["bsln"] => string(8) "AppleApple"
        }
    }
    [1] => array(2) {
        ["aaa"] => array(3) {
            ["abd296a10"] => array(2) {
                ["pid"] => int(56734)
                ["vid"] => int(98612)
                ["idx"] => int(99999)
            }
            ["a31e920fde8"] => array(2) {
                ["pid"] => int(09800)
                ["vid"] => int(34521)
                ["idx"] => int(99999)
            }
            ["a7aa94c38aa49caa"] => array(2) {
                ["pid"] => int(20568)
                ["vid"] => int(26547)
                ["idx"] => int(99999)
            }
        }
        ["bbb"] => array(2) {
            ["bsfn"] => string(4) "Ball"
            ["bsln"] => string(8) "BallBall"
        }
    }
}

这是我要输出的内容:

array(2) {
    ["88888"] => array(3) {
        ["a19a3234b881ce"] => array(4) {
            ["pid"] => int(29301)
            ["vid"] => int(29334)
            ["idx"] => int(88888)
            ["arr"] => string(14) "a19a3234b881ce"
        }
        ["a7aa94c38aa49caa"] => array(4) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(88888)
            ["arr"] => string(16) "a7aa94c38aa49caa"
        }
        ["bbb"] => array(2) {
            ["bsfn"] => string(4) "Apple"
            ["bsln"] => string(8) "AppleApple"
        }
    }
    ["99999"] => array(4) {
        ["abd296a10"] => array(4) {
            ["pid"] => int(29301)
            ["vid"] => int(29334)
            ["idx"] => int(99999)
            ["arr"] => string(9) "abd296a10"
        }
        ["a31e920fde8"] => array(4) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(99999)
            ["arr"] => string(11) "a31e920fde8"
        }
        ["a7aa94c38aa49caa"] => array(4) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(99999)
            ["arr"] => string(16) "a7aa94c38aa49caa"
        }
        ["bbb"] => array(2) {
            ["bsfn"] => string(4) "Ball"
            ["bsln"] => string(8) "BallBall"
        }
    }
}

试试这个例子:

$result = [];
foreach($data as $item) {
    if (!empty($item['aaa']) && is_array($item['aaa'])) {
        $key = array_values($item['aaa'])[0]['idx'] ?? null;
        if ($key) {
            $result[$key] = array_merge($item['aaa'], ['bbb' => $item['bbb'] ?? []]);
        }
    }
}

// Test result:
print_r($result);
Final Output

array(5) {
    ["8888-81ce-4f15"] => array(5) {
            ["pid"] => int(29301)
            ["vid"] => int(29334)
            ["idx"] => int(88888)
            ["cky"] => string(8) "d9b04f15"
            ["arr"] => string(14) "a19a3234b881ce"
    }
    ["8888-9caa-8ac0"] => array(5) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(88888)
            ["cky"] => string(8) "fa71c3f5f8ac0"
            ["arr"] => string(16) "a7aa94c38aa49caa"
    }
    ["9999-6a10-dbb9"] => array(5) {
            ["pid"] => int(29301)
            ["vid"] => int(29334)
            ["idx"] => int(99999)
            ["cky"] => string(8) "e3fc1fdbb9"
            ["arr"] => string(9) "abd296a10"
    }
    ["9999-fde8-f409"] => array(5) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(99999)
            ["cky"] => string(8) "88195c46f409"
            ["arr"] => string(11) "a31e920fde8"
    }
    ["9999-9caa-8ac0"] => array(5) {
            ["pid"] => int(20568)
            ["vid"] => int(26547)
            ["idx"] => int(99999)
            ["cky"] => string(8) "fa71c3f5f8ac0"
            ["arr"] => string(16) "a7aa94c38aa49caa"
        }
    }
}