2012-02-24 96 views
0

我有这个数组。最近几个小时,我一直在尝试循环,做出另一个将安排在各自主题的问题。在数组中循环以制作另一个数组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) 
          ) 

但我无法做到这一点。做这个的最好方式是什么?

+0

由于看来每个问题具有多个受试者,问题会在最终数组中出现多次(每次tid下一次)? – keithhatfield 2012-02-24 20:05:01

+0

是的。它会。我想通过tid列出问题。 – esafwan 2012-02-24 20:08:24

回答

1

假设你的数据是在一个数组称为$data并且因为每一个问题可以有多个对象,每个问题可能会对最终阵列中出现多次:

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