我有以下数组:
$ 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...
任何帮助将不胜感激!提前谢谢!
答案 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_assoc
或mysql_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);