2012-10-22 83 views
2

我有2個數組。 一日一爲將數組內容寫入表

$people = array(
    'person1' => array('name' => 'Ted', 'Year' => '68'), 
    'person2' => array('name' => 'Jane', 'Year' => '72'), 
    'person3' => array('name' => 'James', 'Year' => '46'), 
    'person4' => array('name' => 'Tim', 'Year' => '44'), 
    'person5' => array('name' => 'Ann', 'Year' => '39'), 
    'person6' => array('name' => 'Leyla', 'Year' => '45'), 
    'person7' => array('name' => 'Lucy', 'Year' => '41'), 
    'person8' => array('name' => 'Diana', 'Year' => '28'), 
    'person9' => array('name' => 'Tony', 'Year' => '10'), 
    'person10' => array('name' => 'Jane', 'Year' => '20'), 
    'person11' => array('name' => 'Alex', 'Year' => '30'), 
    'person12' => array('name' => 'Jane', 'Year' => '3'), 
    'person13' => array('name' => 'Ted', 'Year' => '27'), 
    'person14' => array('name' => 'Alex', 'Year' => '1'), 
); 

,第二個是

$genTree = array(
    'families' => array(
     array(
      "mother" => 'person2', 
      "father" => 'person1', 
      'children' => array(
       'person3', 
       'person4', 
       'person5' 
      ) 
     ) 
    ), 
    'nextGeneration' => array(
     'families' => array(
      array(
       'mother' => 'person6', 
       'father' => 'person3', 
       'children' => array(
        'person8', 
       ), 
      ), 
      array(
       'mother' => 'person7', 
       'father' => 'person4', 
       'children' => array(
        'person9', 
        'person10' 
       ) 
      ), 
     ), 
     'nextGeneration' => array(
      'families' => array(
       array(
        'mother' => 'person8', 
        'father' => 'person11', 
        'children' => array(
         'person12' 
        ) 
       ), 
       array(
        'mother' => 'person10', 
        'father' => 'person13', 
        'children' => array(
         'person14' 
        ) 
       ) 
      ), 
     ), 
    ), 
); 

我需要得到每個家庭在新表中的數據每一代, 所以應該安排一個家譜

我試着做下一步,但不是我所需要的

function nameValues($array){ 
    global $people; echo "<table border=1>"; 
    foreach($array as $key=>$value) 
    { 

     echo "<tr>"; 
     if(is_array($value)) 
     { 
      nameValues($value); 
     }else{ 

      echo "<td>".$key." ".$people[$value]['name']."</td>";echo "</tr>"; 

     } 
    } 
    echo "</table>"; 


} 

感謝您的幫助和explenation

+1

你能提供的HTML輸出,你想看到的樣本?順便說一句,當你遞歸地調用'nameValues'時,它不會被放入'td'中,所以它會產生無效的HTML。 – megaflop

回答

2

我希望這將有助於

echo nameValues($genTree); 

function nameValues($array){ 
    global $people; 

    $table = '<table border="1">'; 
    foreach($array as $key => $value){ 
     if($key == 'families'){ 
      $table .= '<tr>'; 
      foreach($value as $familyKey => $familyValue){ 
       $table .= '<td>'; 
       $table .= '<table border="1">'; 
       $table .= '<tr>'; 
       $table .= '<td>Mother: </td><td>'.$people[$familyValue['mother']]['name'].'</td>'; 
       $table .= '<td>Age: </td><td>'.$people[$familyValue['mother']]['Year'].'</td>'; 
       $table .= '</tr>'; 
       $table .= '<tr>'; 
       $table .= '<td>Father: </td><td>'.$people[$familyValue['father']]['name'].'</td>'; 
       $table .= '<td>Age: </td><td>'.$people[$familyValue['father']]['Year'].'</td>'; 
       if(is_array($familyValue['children'])){ 
        foreach($familyValue['children'] as $childrenKey => $childrenValue){ 
         $table .= '<tr>'; 
         $table .= '<td>Child: </td><td>'.$people[$childrenValue]['name'].'</td>'; 
         $table .= '<td>Age: </td><td>'.$people[$childrenValue]['Year'].'</td>'; 
         $table .= '</tr>'; 
        } 
       } 
       $table .= '</tr>'; 
       $table .= '</table>'; 
       $table .= '</td>'; 
      } 
      $table .= '</tr>'; 
     }else{ 
      $table .= nameValues($value); 
     } 
    } 
    $table .= '</table>'; 
    return $table; 
} 
+0

對不起,但這隻返回第一家庭?其他家庭呢? – 5ome

+0

對不起,我做了一些改動,我編輯了我的代碼,問題是每一代再次回想,但是,請複製新代碼並重試 –

1

嘗試這樣的:

function printfam($genarray,$people) 
{ 
    if(count($genarray['families']>0)) 
    { 
     for($temp=0;$temp<count($genarray['families']);$temp++) 
     { 

      $famarray=$genarray['families'][$temp]; 

      echo "<table>"; 
      echo "<tr><th>Father</th><td>".$people[$famarray['father']]['name']." (".$people[$famarray['father']]['Year'].")"."</td></tr>"; 
      echo "<tr><th>Mother</th><td>".$people[$famarray['mother']]['name']." (".$people[$famarray['mother']]['Year'].")"."</td></tr>"; 
      if(count($famarray['children'])>0) 
      { 

       $childrenarr=array(); 
       foreach($famarray['children'] as $ch) 
       { 
        $childrenarr[]= $people[$ch]['name']." (".$people[$ch]['Year'].")"; 
       } 
       echo "<tr><th>Childrens</th><td>".implode(", ",$childrenarr)."</td></tr>"; 
      } 

      echo "</table><br />"; 
      if(isset($genarray['nextGeneration'])) 
      printfam($genarray['nextGeneration'],$people); 

     } 
    } 
} 

printfam($genTree,$people);