2010-10-25 13 views
5

BuPHP patlat ve diziye koy

Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie

satırına sahibim : (kolon) ana konu için ayırıcıdır ve | farklı alt konular için ayırıcıdır.

Patlatmaya çalıştım ve diziye koydum, sonuç olarak aşağı açılır menüde görüntülenecek bir sonuca ihtiyacım var: -

 
    Fruits 
     banana 
     apple 
     orange 
    Food 
     fries 
     sausages 
 $result=explode(":",$data); 
    foreach($result as $res) { 
     $sub_res[]=explode("-",$res); 

    } 


    foreach($sub_res as $sub) { 
     //echo $sub[1]."<br>"; Over here, I can get the strings of [0]=>banana|apple|orange, [1]=>sausages|fries, 
     // I explode it again to get each items 
      $items[]=explode("|",$sub[1]); 
     $mainCategory[]=$sub[0]; // This is ([0]=>Fruits, ]1]=>Food, [2]=>dessert 
      // How do I assign the $items into respective categories? 
    } 

Teşekkürler!

+0

kategoriler? – Kel

+0

Bu çizgiyi nereden aldınız? –

+0

Hepsi için tek bir açılır menüye mi yoksa her tür için ayrı bir açılırma mı ihtiyacınız var? – Jason

cevap

6

Sen yapabilirsiniz:

$result=explode(":",$data); 
foreach($result as $res) { 
     $sub = explode("-",$res); 
     $mainCategory[$sub[0]] = explode("|",$sub[1]); 
} 

Working link

+0

Cevabınız için teşekkür ederiz. Harika çalışıyor! – Sylph

3

Kodu: Açılan yansıtacak şekilde Güncelleme

$data = "Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie"; 
foreach(explode(":",$data) as $res) { // explode by ":" 
    $cat = explode("-",$res); // explode by "-" 
    $ilovefood[$cat[0]] = explode("|",$cat[1]); // explode by "|" 
} 
print_r($ilovefood); 
//Returns : Array ([Fruits] => Array ([0] => banana [1] => apple [2] => orange) [Food] => Array ([0] => fries [1] => sausages) [Desserts] => Array ([0] => ice cream [1] => apple pie)) 
foreach($ilovefood as $type=>$yum){ 
    echo "$type:<select>"; 
    foreach($yum as $tasty){ 
    echo "<option>$tasty</option>"; 
    } 
    echo "</select>"; 
} 

. Görünüşe göre ev ödevini yaptım, ... ... ama seni bir foreach döngüsünde birleştirmek için bırakacağım.

+0

Teşekkürler Jason! 3 damla aşağıya ihtiyacım yok ama cevabınız bana daha iyi anlamanıza yardımcı oldu: D – Sylph

+0

Sadece 'ilovefood [$ cat [0]]' a sahip olduğumu farkettim. Aslında her kediye pek sevmiyorum. – Jason

1

Ben bir belki daha okunabilir bir sürümünü önermek istiyorum codeaddicts' Eğer batık şehrin ayrı 2 boyutlu dizi gerekiyor mu answer

$str = "Fruits-banana|apple|orange:Food-fries|sausages:Desserts-ice cream|apple pie"; 

$topics = array(); 
foreach (explode(':', $str) as $topic) { 
    list($name, $items) = explode('-', $topic); 
    $topics[$name] = explode('|', $items); 
} 
+0

Teşekkür ederiz! :) Sorunumu çözdü;) – Sylph