PHP函数生成UL LI

api*_*s17 1 php arrays treeview

我将这个地址称为函数olLiTree

PHP函数创建嵌套的ul li?

我有这个阵列

$ tree = array("A"=> array("B"=> array("C"=>"C","D"=>"D"),"E"=> array("F"=> "F", "G"=> "G")));

但无法使用此功能

function olLiTree($tree)
{
    echo '<ul>';
    foreach($tree as $item) {
        if (is_array($item)) {
            olLiTree($item);
        } else {
            echo '<li>', $item, '</li>';
        }
    }
    echo '</ul>';
}
Run Code Online (Sandbox Code Playgroud)

生成

<ul>
  <li>A</li>
  <li>B
    <ul>
      <li>C</li>
      <li>D</li>
    </ul>
  </li>
  <li>E
    <ul>
      <li>F
      </li>
    </ul>
  </li>
  <ul>
    <li>G</li>
  </ul>
</ul>
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?谢谢..

dec*_*eze 8

function olLiTree($tree) {
    $out = '<ul>';

    foreach($tree as $key => $value) {
        $out.= '<li>';

        if (is_array($value)) {
            $out.= $key . olLiTree($value);
        } else {
            $out.= $value;
        }

        $out.= '</li>';
    }

    $out.= '</ul>';

    return $out;
}
Run Code Online (Sandbox Code Playgroud)

始终return是最终输出,不要echo直接输出.当你发现一个情况下,你你会感谢自己1天希望echo立即它.:)

您可能希望将数组结构更改为此,因为它不那么冗余(使用上面的代码):

$tree = array('A', 'B', 'C' => array('CA', 'CB'), 'D');
Run Code Online (Sandbox Code Playgroud)