循环遍历一个数组以在php中生成另一个数组


Looping through an array to make another array in php

我有这个数组。在过去的几个小时里,我一直在尝试循环并制作另一个,将问题安排在各自的科目中。

[23] => Array
        (
            [right] => A list of station and network addresses with corresponding gateway IP address.
            [id] => 23
            [level] => Professional
            [subject] => Array
                (
                    [0] => Array
                        (
                        [tid] => 1
                    )
                [1] => Array
                    (
                        [tid] => 6
                    )
            )
        [question] => What is an IP routing table?
        [answer] => A list of host names and corresponding IP addresses.
        [correct] => 0
    )
[22] => Array
    (
        [right] => Session hijacking attack
        [id] => 22
        [level] => Professional
        [subject] => Array
            (
                [0] => Array
                    (
                        [tid] => 1
                    )
                [1] => Array
                    (
                        [tid] => 6
                    )
            )
        [question] => How would an IP spoofing attack be best classified?
        [answer] => Session hijacking attack
        [correct] => 1
    )
[21] => Array
    (
        [right] => Repeater
        [id] => 21
        [level] => Intermediate
        [subject] => Array
            (
                [0] => Array
                    (
                        [tid] => 1
                    )
                [1] => Array
                    (
                        [tid] => 6
                    )
            )

我想做下面这样的东西。

array ( [tid1] => array (
                            [0] array (  [question] => something )
                            [1] array (  [question] => somethingelse )
                           )
         [tid2] => array (
                            [0] array (  [question] => something )
                            [1] array (  [question] => somethingelse )
                           )

但我做不到。最好的方法是什么?

假设您的数据位于一个名为$data的数组中,并且由于每个问题可以有多个主题,因此每个问题可能在最终数组中出现多次:

$final = array();
foreach($data as $datum){
    $subjects = $datum['subject'];
    foreach($subjects as $subject){
        $tid = 'tid' . $subject['tid'];
        $final[$tid][] = array('question' => $datum['question']);
    }
}