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


}

感谢您的帮助和解释

4

2 回答 2

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;
}
于 2012-10-22T12:13:08.107 回答
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);
于 2012-10-22T11:43:34.173 回答