2012-12-15 28 views
6

Aşağıdaki dizi var:php çok boyutlu bir dizi kullanarak ul ve li oluşturmak

$ tree_array

Ben var_dump yaptığınızda, alıyorum:

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 
    } 
} 

Benim nihai hedef etmektir Bu verilerle sırasız listeler ve listeler (ul, li) oluşturun. Veri tabanı güncellendikçe diziye daha fazla veri eklenecek, böylece büyümeye devam edecek. Amacım dizi boyunca döngü yapmak ve aşağıdaki kodu oluşturmasını sağlamak ve veri büyüdükçe listeler oluşturmaya devam etmektir. Ben php için yeniyim ve bunu nasıl yapacağımı bilmiyorum.

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

Herhangi bir yardım büyük takdir edilecektir! Şimdiden teşekkür ederim!

cevap

1

bana yeterince basit bir yineleme gibi görünüyor: Eğer orada bazı yinelenen değerler var gibi

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

görünüyor. mysql_fetch_array kullanıyor musunuz? İlişkilendirmeli veya dizine eklenmiş bir diziye ihtiyacınız olup olmadığına bağlı olarak mysql_fetch_assoc veya mysql_fetch_row kullanıyor olmalısınız.

+0

Bu öneriler her ikisi de harika. Sahip olduğum problem, listelerin derinleşeceği. Verilerin mysql'den çekildiği bir hedef tablosu ve fırsat tablosu var. Bu nedenle, doğrudan bir hedefin altında bir çocuk/alt hedef ya da bir fırsat olabilir. Örneğin: 100.000 gelir = işten 30.000 iş (bu bir hedeftir) 100.000 gelir => kiralık evi bob'a satmak (bu bir fırsattır). Ayrıca, çocuk hedefleri daha derinlemesine incelendikçe, kendilerine ve fırsatlarına bağlı çocuk hedeflerine sahip olabilirler. – m1e1b1

+0

Ayrıca, dizileri assoc olarak değiştirdim. İşte şimdi dökümden aldığım çıktı: dizi (6) {[0] => string (23) "$ 100,000 Nakit Akışı 2013" [1] => dizi (3) {["Goal_ID"] => string (1) "2" ["Fırsat]] => string (13)" Iron Oak Sat "[" OID "] => string (2)" 10 "} [2] => dizi (1) {[" Etkinlik "] => string (32)" satın almak isteyip istemediğini sor "} [3] => array (3) {[" Goal_ID "] => string (1)" 2 "[" Opportunity "] => string (8) "Araba Satışı" ["OID"] => string (2) "11"} [4] => dizi (1) {["Activity"] => string (52) "Görmek için Roy'u geri ara Eğer satın almak isterse "} [5] => dizi (1) {[" tot_opp "] => NULL}} – m1e1b1

+0

Bu arada yardım için çok teşekkürler! İkiniz de benim bulunduğumun ötesine geçtiniz! – m1e1b1

1

Bunun için bir özdevleme işlevine ihtiyacınız vardır, bir döngü değil. Bu şekilde, kaynak dizininizin herhangi bir derinliğini ele alacaktır.

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); 
+0

Bu öneriler hem harika. Sahip olduğum problem, listelerin derinleşeceği. Verilerin mysql'den çekildiği bir hedef tablosu ve fırsat tablosu var. Bu nedenle, doğrudan bir hedefin altında bir çocuk/alt hedef ya da bir fırsat olabilir. Örneğin: 100.000 gelir = işten 30.000 iş (bu bir hedeftir) 100.000 gelir => kiralık evi bob'a satmak (bu bir fırsattır). Ayrıca, çocuk hedefleri daha derinlemesine incelendikçe, kendilerine ve fırsatlarına bağlı çocuk hedeflerine sahip olabilirler. – m1e1b1

+0

Öğeleri sırayla tutarsanız işlev budur. Yani, eğer bir hedefe sahip olan bir unsur çocuğun/alt hedefleri olan bir unsur tarafından takip edilecekse, doğal görünecektir, değil mi? – Ranty

İlgili konular