2017-04-07 88 views
1

我想创建一个谱系,我已经得到了构建和显示数据的功能,我只是不知道如何在输出上正确地格式化它。如何格式排列家族树

我试图用这个CSS/HTML http://jsfiddle.net/bZGFA/32/

我阵列的树信息输出看起来像这样的工作:

Array(
[id] => IJ6wF 
[mother] => Array (
    [id] => BzOqN 
    [mother] => Array (
     [id] => 1G3Pl 
     [mother] => 
     [father] => 
    ) 
    [father] => Array (
     [id] => xWDlH 
     [mother] => 
     [father] => 
    ) 
) 
[father] => Array (
    [id] => Rstov 
    [mother] => 
    [father] => 
) 
) 

我使用递归函数来建立数组。我正在使用下面的函数,我发现在stackoverflow显示数组。

function displayArrayRecursively($arr, $indent='') { 
    if ($arr) { 
     foreach ($arr as $value) { 
      if (is_array($value)) { 
       // 
       displayArrayRecursively($value, $indent . '--'); 
      } else { 
       // Output 
       if (!empty($value)) { 
        echo "$level $indent $value \n"; 
       } 
      } 
     } 
    } 
} 

我迷失在如何配置函数来构建表。任何帮助将是惊人的。谢谢!

+2

所以你的函数已经'正确echo'ing的数据?你只需要修改'echo'来包含相关的HTML段,然后你可以使用CSS进行设计。 –

+0

这就是我需要帮助的部分 - 如何定义在任何给定级别需要抛出的HTML部分。那有意义吗? :) –

+0

似乎列表和嵌套列表。我会假设一个暴力方法是回应出合适的HTML或建立一个包含HTML的字符串。 –

回答

0
printTree($array) { 
    $out = "<li>" . "<a href='#'>". $array["id"] . "</a>"; 

    if (array_key_exists("mother", $array) || array_key_exists("father", $array)) { 

     $out .= "<ul>"; 

     if (array_key_exists("mother", $array)) { 
      $out .= printTree($array["mother"]); 
     } 

     if (array_key_exists("father", $array)) { 
      $out .= printTree($array["father"]); 
     } 

     $out .= "</ul>"; 
    } 

    $out .= "</li>"; 

    return $out; 
} 

而在HTML中使用:

<ul class="tree desc3"> 
    <?php echo printTree($array); ?> 
</ul> 
+0

谢谢!你愿意帮我弄清楚如何将它格式化为表格格式吗?我不知道如何计算它的rowspan部分? http://jsfiddle.net/M2r7D/1/ –