在php中使用多维数组创建ul和li

时间:2012-12-15 15:09:54

标签: php multidimensional-array html-lists

我有以下数组:

$ tree_array

当我做var_dump时,我得到:

array(6) {
    [0]=> string(23) "$100,000 Cash Flow 2013"
    [1]=> array(6) {
        [0]=> string(1) "2" ["Goal_ID"]=> string(1) "2"
        [1]=> string(13) "Sell Iron Oak" ["Opportunity"]=> string(13) "Sell Iron Oak"
        [2]=> string(2) "10" ["OID"]=> string(2) "10"
    }
    [2]=> array(2) {
        [0]=> string(32) "ask her if she would like to buy" ["Activity"]=> string(32) "ask her if she would like to buy"
    }
    [3]=> array(6) {
        [0]=> string(1) "2" ["Goal_ID"]=> string(1) "2"
        [1]=> string(8) "Sell Car" ["Opportunity"]=> string(8) "Sell Car"
        [2]=> string(2) "11" ["OID"]=> string(2) "11"
    }
    [4]=> array(2) {
            [0]=> string(52) "Call Roy back to see if he would like to purchase it" ["Activity"]=> string(52) "Call Roy back to see if he would like to purchase it"
    }
    [5]=> array(1) {
        ["tot_opp"]=> NULL
    }
} 

我的最终目标是使用此数据创建无序列表和列表(ul,li)。随着数据库的更新,将会有更多数据添加到数组中,因此它将继续增长。我的目标是遍历数组并让它创建以下代码,并能够随着数据的增长继续创建列表。我是php新手,不知道如何做到这一点。

<ul>
<li>$100,000 Cash Flow 2013</li>
<ul>
<li>Sell Iron Oak</li>
<ul>
<li>ask her if she would like to buy</li>
</ul>
<ul>
<li>Sell Car</li>
</ul>etc...

任何帮助将不胜感激!提前谢谢!

2 个答案:

答案 0 :(得分:1)

对我来说似乎是一个简单的递归:

function arrayToList($in) {
  echo "<ul>";
  foreach($in as $v) {
    if( is_array($v)) arrayToList($v);
    else echo '<li>' . $v . '</li>';
  }
  echo "</ul>";
}

看起来你有一些重复的值。你在使用mysql_fetch_array吗?您应该使用mysql_fetch_assocmysql_fetch_row,具体取决于您是需要关联数组还是索引数组。

答案 1 :(得分:1)

你需要一个递归函数,而不是一个循环。这样它就可以处理源数组的任何深度。

function make_list($arr)
{
    $return = '<ul>';
    foreach ($arr as $item)
    {
        $return .= '<li>' . (is_array($item) ? make_list($item) : $item) . '</li>';
    }
    $return .= '</ul>';
    return $return;
}
echo make_list($source_array);