7

次の配列があります。

$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...

どんな助けでも大歓迎です!前もって感謝します!

4

2 に答える 2

2

私には十分に単純な再帰のようです:

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

于 2012-12-15T15:24:32.953 に答える
2

そのためには、ループではなく再帰関数が必要です。このようにして、ソース配列の深さを処理します。

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);
于 2012-12-15T15:26:27.013 に答える